clarion-shared-types 1.0.104 → 1.0.106

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/cjs/index.js +1 -0
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/modules/alert-dispatch/index.js +1 -0
  4. package/dist/cjs/modules/alert-dispatch/index.js.map +1 -1
  5. package/dist/cjs/modules/alert-dispatch/interfaces/guardian-audience.js +3 -0
  6. package/dist/cjs/modules/alert-dispatch/interfaces/guardian-audience.js.map +1 -0
  7. package/dist/cjs/modules/permission/enums/permission-actions.enum.js +18 -0
  8. package/dist/cjs/modules/permission/enums/permission-actions.enum.js.map +1 -1
  9. package/dist/cjs/modules/permission/enums/permissions-moudule.enum.js +2 -0
  10. package/dist/cjs/modules/permission/enums/permissions-moudule.enum.js.map +1 -1
  11. package/dist/cjs/modules/role/constants/newsfeed-roles.js +20 -0
  12. package/dist/cjs/modules/role/constants/newsfeed-roles.js.map +1 -0
  13. package/dist/cjs/modules/role/constants/safety-roles.js +19 -0
  14. package/dist/cjs/modules/role/constants/safety-roles.js.map +1 -0
  15. package/dist/cjs/modules/role/index.js +2 -0
  16. package/dist/cjs/modules/role/index.js.map +1 -1
  17. package/dist/cjs/modules/safety/constants/safety-check-limits.const.js +34 -0
  18. package/dist/cjs/modules/safety/constants/safety-check-limits.const.js.map +1 -0
  19. package/dist/cjs/modules/safety/constants/safety-taxonomy.const.js +17 -0
  20. package/dist/cjs/modules/safety/constants/safety-taxonomy.const.js.map +1 -0
  21. package/dist/cjs/modules/safety/enums/safety-enums.js +95 -0
  22. package/dist/cjs/modules/safety/enums/safety-enums.js.map +1 -0
  23. package/dist/cjs/modules/safety/index.js +26 -0
  24. package/dist/cjs/modules/safety/index.js.map +1 -0
  25. package/dist/cjs/modules/safety/interfaces/safety-check.dto.js +3 -0
  26. package/dist/cjs/modules/safety/interfaces/safety-check.dto.js.map +1 -0
  27. package/dist/cjs/modules/safety/utils/safety-display.util.js +96 -0
  28. package/dist/cjs/modules/safety/utils/safety-display.util.js.map +1 -0
  29. package/dist/esm/index.js +1 -0
  30. package/dist/esm/index.js.map +1 -1
  31. package/dist/esm/modules/alert-dispatch/index.js +1 -0
  32. package/dist/esm/modules/alert-dispatch/index.js.map +1 -1
  33. package/dist/esm/modules/alert-dispatch/interfaces/guardian-audience.js +2 -0
  34. package/dist/esm/modules/alert-dispatch/interfaces/guardian-audience.js.map +1 -0
  35. package/dist/esm/modules/permission/enums/permission-actions.enum.js +18 -0
  36. package/dist/esm/modules/permission/enums/permission-actions.enum.js.map +1 -1
  37. package/dist/esm/modules/permission/enums/permissions-moudule.enum.js +2 -0
  38. package/dist/esm/modules/permission/enums/permissions-moudule.enum.js.map +1 -1
  39. package/dist/esm/modules/role/constants/newsfeed-roles.js +17 -0
  40. package/dist/esm/modules/role/constants/newsfeed-roles.js.map +1 -0
  41. package/dist/esm/modules/role/constants/safety-roles.js +16 -0
  42. package/dist/esm/modules/role/constants/safety-roles.js.map +1 -0
  43. package/dist/esm/modules/role/index.js +2 -0
  44. package/dist/esm/modules/role/index.js.map +1 -1
  45. package/dist/esm/modules/safety/constants/safety-check-limits.const.js +31 -0
  46. package/dist/esm/modules/safety/constants/safety-check-limits.const.js.map +1 -0
  47. package/dist/esm/modules/safety/constants/safety-taxonomy.const.js +14 -0
  48. package/dist/esm/modules/safety/constants/safety-taxonomy.const.js.map +1 -0
  49. package/dist/esm/modules/safety/enums/safety-enums.js +92 -0
  50. package/dist/esm/modules/safety/enums/safety-enums.js.map +1 -0
  51. package/dist/esm/modules/safety/index.js +10 -0
  52. package/dist/esm/modules/safety/index.js.map +1 -0
  53. package/dist/esm/modules/safety/interfaces/safety-check.dto.js +2 -0
  54. package/dist/esm/modules/safety/interfaces/safety-check.dto.js.map +1 -0
  55. package/dist/esm/modules/safety/utils/safety-display.util.js +89 -0
  56. package/dist/esm/modules/safety/utils/safety-display.util.js.map +1 -0
  57. package/dist/types/index.d.ts +1 -0
  58. package/dist/types/modules/alert-dispatch/index.d.ts +1 -0
  59. package/dist/types/modules/alert-dispatch/interfaces/guardian-audience.d.ts +12 -0
  60. package/dist/types/modules/incident/intefaces/incident-category.d.ts +9 -0
  61. package/dist/types/modules/incident/intefaces/incident-type.d.ts +9 -0
  62. package/dist/types/modules/permission/enums/permission-actions.enum.d.ts +12 -0
  63. package/dist/types/modules/permission/enums/permissions-moudule.enum.d.ts +3 -1
  64. package/dist/types/modules/role/constants/newsfeed-roles.d.ts +8 -0
  65. package/dist/types/modules/role/constants/safety-roles.d.ts +8 -0
  66. package/dist/types/modules/role/index.d.ts +2 -0
  67. package/dist/types/modules/safety/constants/safety-check-limits.const.d.ts +30 -0
  68. package/dist/types/modules/safety/constants/safety-taxonomy.const.d.ts +19 -0
  69. package/dist/types/modules/safety/enums/safety-enums.d.ts +83 -0
  70. package/dist/types/modules/safety/index.d.ts +5 -0
  71. package/dist/types/modules/safety/interfaces/safety-check.dto.d.ts +176 -0
  72. package/dist/types/modules/safety/utils/safety-display.util.d.ts +18 -0
  73. package/package.json +1 -1
@@ -0,0 +1,17 @@
1
+ import { Roles } from "../enums/role.enum";
2
+ /**
3
+ * The organization roles that RUN its newsfeed - write, publish, archive, delete
4
+ * and moderate. Mirrors grm-shared-library, where roles.spec.ts asserts each
5
+ * holds every Newsfeed action. The admin offers newsfeed changes only to these.
6
+ */
7
+ export const NEWSFEED_MANAGER_ROLES = [
8
+ Roles.ORGANIZATION_OWNER,
9
+ Roles.ORGANIZATION_ADMIN,
10
+ Roles.ORGANIZATION_NEWSFEED_ADMIN
11
+ ];
12
+ /** Staff who may SEE the newsfeed as the admin shows it: the managers plus Organization:User. */
13
+ export const NEWSFEED_VIEWER_ROLES = [
14
+ ...NEWSFEED_MANAGER_ROLES,
15
+ Roles.ORGANIZATION_USER
16
+ ];
17
+ //# sourceMappingURL=newsfeed-roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"newsfeed-roles.js","sourceRoot":"","sources":["../../../../../src/modules/role/constants/newsfeed-roles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAa;IAC5C,KAAK,CAAC,kBAAkB;IACxB,KAAK,CAAC,kBAAkB;IACxB,KAAK,CAAC,2BAA2B;CACpC,CAAC;AAEF,iGAAiG;AACjG,MAAM,CAAC,MAAM,qBAAqB,GAAa;IAC3C,GAAG,sBAAsB;IACzB,KAAK,CAAC,iBAAiB;CAC1B,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { Roles } from "../enums/role.enum";
2
+ /**
3
+ * The organization roles that curate the Safety Check reasons their app offers.
4
+ * Mirrors grm-shared-library, where roles.spec.ts asserts each holds
5
+ * manage:safety-check-reason. Platform-wide reasons are Super-Admin's alone.
6
+ */
7
+ export const SAFETY_MANAGER_ROLES = [
8
+ Roles.ORGANIZATION_OWNER,
9
+ Roles.ORGANIZATION_ADMIN
10
+ ];
11
+ /** Staff who may read Safety Checks: the managers, and a control-centre admin within their control centre. */
12
+ export const SAFETY_VIEWER_ROLES = [
13
+ ...SAFETY_MANAGER_ROLES,
14
+ Roles.CONTROL_CENTRE_ADMIN
15
+ ];
16
+ //# sourceMappingURL=safety-roles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety-roles.js","sourceRoot":"","sources":["../../../../../src/modules/role/constants/safety-roles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAE3C;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAa;IAC1C,KAAK,CAAC,kBAAkB;IACxB,KAAK,CAAC,kBAAkB;CAC3B,CAAC;AAEF,8GAA8G;AAC9G,MAAM,CAAC,MAAM,mBAAmB,GAAa;IACzC,GAAG,oBAAoB;IACvB,KAAK,CAAC,oBAAoB;CAC7B,CAAC"}
@@ -2,4 +2,6 @@ export * from './enums/role.enum';
2
2
  export * from './interfaces/role';
3
3
  export * from './constants/roles-by-scope';
4
4
  export * from './constants/billing-roles';
5
+ export * from './constants/newsfeed-roles';
6
+ export * from './constants/safety-roles';
5
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/role/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/modules/role/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * The Safety Check limits. Mirrors grm-shared-library, which is what the server
3
+ * enforces - the admin only displays them.
4
+ */
5
+ export const SAFETY_CHECK_LIMITS = {
6
+ minDurationMinutes: 1,
7
+ maxDurationMinutes: 24 * 60,
8
+ defaultDurationMinutes: 15,
9
+ presetDurationsMinutes: [15, 30, 60, 120, 180, 480],
10
+ minPromptCountdownSeconds: 15,
11
+ maxPromptCountdownSeconds: 10 * 60,
12
+ defaultPromptCountdownSeconds: 60,
13
+ checkInGraceSeconds: 10,
14
+ staleSosWindowMinutes: 12 * 60,
15
+ customReasonMaxLength: 120,
16
+ maxTrackPointsPerBatch: 200,
17
+ };
18
+ export const SAFETY_CHECK_DEFAULTS = {
19
+ durationMinutes: SAFETY_CHECK_LIMITS.defaultDurationMinutes,
20
+ promptCountdownSeconds: SAFETY_CHECK_LIMITS.defaultPromptCountdownSeconds,
21
+ allGuardiansSelected: true,
22
+ notifyServiceProvider: true,
23
+ notifyGuardiansOnStartEnd: true,
24
+ vibrate: true,
25
+ alarmSound: true,
26
+ };
27
+ /** States in which the user is "in a Safety Check". */
28
+ export const OPEN_SAFETY_CHECK_STATUS_VALUES = ['CREATED', 'ACTIVE', 'PROMPTING'];
29
+ /** Upper-snake reason code, as the backend validates it. */
30
+ export const SAFETY_CHECK_REASON_CODE_PATTERN = /^[A-Z][A-Z0-9_]{1,49}$/;
31
+ //# sourceMappingURL=safety-check-limits.const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety-check-limits.const.js","sourceRoot":"","sources":["../../../../../src/modules/safety/constants/safety-check-limits.const.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;IAC/B,kBAAkB,EAAE,CAAC;IACrB,kBAAkB,EAAE,EAAE,GAAG,EAAE;IAC3B,sBAAsB,EAAE,EAAE;IAC1B,sBAAsB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAsB;IACxE,yBAAyB,EAAE,EAAE;IAC7B,yBAAyB,EAAE,EAAE,GAAG,EAAE;IAClC,6BAA6B,EAAE,EAAE;IACjC,mBAAmB,EAAE,EAAE;IACvB,qBAAqB,EAAE,EAAE,GAAG,EAAE;IAC9B,qBAAqB,EAAE,GAAG;IAC1B,sBAAsB,EAAE,GAAG;CACrB,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACjC,eAAe,EAAE,mBAAmB,CAAC,sBAAsB;IAC3D,sBAAsB,EAAE,mBAAmB,CAAC,6BAA6B;IACzE,oBAAoB,EAAE,IAAI;IAC1B,qBAAqB,EAAE,IAAI;IAC3B,yBAAyB,EAAE,IAAI;IAC/B,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;CACV,CAAC;AAEX,uDAAuD;AACvD,MAAM,CAAC,MAAM,+BAA+B,GAAsB,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AAErG,4DAA4D;AAC5D,MAAM,CAAC,MAAM,gCAAgC,GAAG,wBAAwB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { SafetyIncidentCategoryCode, SafetyIncidentTypeCode } from '../enums/safety-enums';
2
+ /**
3
+ * Names of the platform-managed Safety Alerts category and types, as
4
+ * clarion-incident provisions them for every organization. The admin shows these
5
+ * rows read-only (they carry `isSystem: true`).
6
+ */
7
+ export const SAFETY_ALERTS_TAXONOMY_NAMES = {
8
+ category: { code: SafetyIncidentCategoryCode.SAFETY_ALERTS, name: 'Safety Alerts' },
9
+ types: [
10
+ { code: SafetyIncidentTypeCode.SAFETY_CHECK_SOS, name: 'Safety Check SOS' },
11
+ { code: SafetyIncidentTypeCode.FOLLOW_ME_SOS, name: 'Follow Me SOS' },
12
+ ],
13
+ };
14
+ //# sourceMappingURL=safety-taxonomy.const.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety-taxonomy.const.js","sourceRoot":"","sources":["../../../../../src/modules/safety/constants/safety-taxonomy.const.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE3F;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG;IACxC,QAAQ,EAAE,EAAE,IAAI,EAAE,0BAA0B,CAAC,aAAa,EAAE,IAAI,EAAE,eAAe,EAAE;IACnF,KAAK,EAAE;QACH,EAAE,IAAI,EAAE,sBAAsB,CAAC,gBAAgB,EAAE,IAAI,EAAE,kBAAkB,EAAE;QAC3E,EAAE,IAAI,EAAE,sBAAsB,CAAC,aAAa,EAAE,IAAI,EAAE,eAAe,EAAE;KACxE;CACK,CAAC"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Frontend mirrors of the Safety enums in grm-shared-library.
3
+ *
4
+ * Kept in ONE file: the admin's Safety Features screens import them together.
5
+ * Values are byte-identical to the backend's, because they travel over the wire
6
+ * as strings and any drift would show up as a silently unstyled chip rather than
7
+ * a compile error (safety-display.spec.ts pins them).
8
+ */
9
+ /** Lifecycle of one Safety Check. See the backend enum for what each state means. */
10
+ export var SafetyCheckStatus;
11
+ (function (SafetyCheckStatus) {
12
+ SafetyCheckStatus["CREATED"] = "CREATED";
13
+ SafetyCheckStatus["ACTIVE"] = "ACTIVE";
14
+ SafetyCheckStatus["PROMPTING"] = "PROMPTING";
15
+ SafetyCheckStatus["CHECKED_IN"] = "CHECKED_IN";
16
+ SafetyCheckStatus["SOS_TRIGGERED"] = "SOS_TRIGGERED";
17
+ SafetyCheckStatus["STOPPED"] = "STOPPED";
18
+ SafetyCheckStatus["EXPIRED"] = "EXPIRED";
19
+ SafetyCheckStatus["CANCELLED"] = "CANCELLED";
20
+ SafetyCheckStatus["FAILED"] = "FAILED";
21
+ })(SafetyCheckStatus || (SafetyCheckStatus = {}));
22
+ /** Why a Safety Check raised an SOS. */
23
+ export var SafetyCheckSosTrigger;
24
+ (function (SafetyCheckSosTrigger) {
25
+ SafetyCheckSosTrigger["MISSED_CHECK_IN"] = "MISSED_CHECK_IN";
26
+ SafetyCheckSosTrigger["USER_REQUESTED"] = "USER_REQUESTED";
27
+ })(SafetyCheckSosTrigger || (SafetyCheckSosTrigger = {}));
28
+ /** Who caused a Safety Check transition. */
29
+ export var SafetyCheckActorType;
30
+ (function (SafetyCheckActorType) {
31
+ SafetyCheckActorType["USER"] = "USER";
32
+ SafetyCheckActorType["WORKFLOW"] = "WORKFLOW";
33
+ SafetyCheckActorType["RECONCILER"] = "RECONCILER";
34
+ SafetyCheckActorType["SYSTEM"] = "SYSTEM";
35
+ })(SafetyCheckActorType || (SafetyCheckActorType = {}));
36
+ /** Audit trail entries. Never carries a location. */
37
+ export var SafetyCheckAuditEventType;
38
+ (function (SafetyCheckAuditEventType) {
39
+ SafetyCheckAuditEventType["CREATED"] = "CREATED";
40
+ SafetyCheckAuditEventType["ACTIVATED"] = "ACTIVATED";
41
+ SafetyCheckAuditEventType["TRACKING_STARTED"] = "TRACKING_STARTED";
42
+ SafetyCheckAuditEventType["TRACKING_UNAVAILABLE"] = "TRACKING_UNAVAILABLE";
43
+ SafetyCheckAuditEventType["WORKFLOW_STARTED"] = "WORKFLOW_STARTED";
44
+ SafetyCheckAuditEventType["WORKFLOW_START_FAILED"] = "WORKFLOW_START_FAILED";
45
+ SafetyCheckAuditEventType["EXTENDED"] = "EXTENDED";
46
+ SafetyCheckAuditEventType["PROMPT_STARTED"] = "PROMPT_STARTED";
47
+ SafetyCheckAuditEventType["CHECKED_IN"] = "CHECKED_IN";
48
+ SafetyCheckAuditEventType["STOPPED"] = "STOPPED";
49
+ SafetyCheckAuditEventType["CANCELLED"] = "CANCELLED";
50
+ SafetyCheckAuditEventType["SOS_TRIGGERED"] = "SOS_TRIGGERED";
51
+ SafetyCheckAuditEventType["SOS_INCIDENT_CREATED"] = "SOS_INCIDENT_CREATED";
52
+ SafetyCheckAuditEventType["SOS_INCIDENT_RETRY"] = "SOS_INCIDENT_RETRY";
53
+ SafetyCheckAuditEventType["SOS_FAILED"] = "SOS_FAILED";
54
+ SafetyCheckAuditEventType["EXPIRED"] = "EXPIRED";
55
+ })(SafetyCheckAuditEventType || (SafetyCheckAuditEventType = {}));
56
+ /** The safety features that can raise an incident. */
57
+ export var SafetyFeature;
58
+ (function (SafetyFeature) {
59
+ SafetyFeature["SAFETY_CHECK"] = "SAFETY_CHECK";
60
+ SafetyFeature["FOLLOW_ME"] = "FOLLOW_ME";
61
+ })(SafetyFeature || (SafetyFeature = {}));
62
+ /** Stable code of the incident category every organization receives. */
63
+ export var SafetyIncidentCategoryCode;
64
+ (function (SafetyIncidentCategoryCode) {
65
+ SafetyIncidentCategoryCode["SAFETY_ALERTS"] = "SAFETY_ALERTS";
66
+ })(SafetyIncidentCategoryCode || (SafetyIncidentCategoryCode = {}));
67
+ /** Stable codes of the incident types inside the Safety Alerts category. */
68
+ export var SafetyIncidentTypeCode;
69
+ (function (SafetyIncidentTypeCode) {
70
+ SafetyIncidentTypeCode["SAFETY_CHECK_SOS"] = "SAFETY_CHECK_SOS";
71
+ SafetyIncidentTypeCode["FOLLOW_ME_SOS"] = "FOLLOW_ME_SOS";
72
+ })(SafetyIncidentTypeCode || (SafetyIncidentTypeCode = {}));
73
+ /** Machine-readable `code` on errors clarion-safety returns. */
74
+ export var SafetyCheckErrorCode;
75
+ (function (SafetyCheckErrorCode) {
76
+ SafetyCheckErrorCode["NOT_FOUND"] = "SAFETY_CHECK_NOT_FOUND";
77
+ SafetyCheckErrorCode["ALREADY_ACTIVE"] = "SAFETY_CHECK_ALREADY_ACTIVE";
78
+ SafetyCheckErrorCode["ALREADY_ENDED"] = "SAFETY_CHECK_ENDED";
79
+ SafetyCheckErrorCode["SOS_ALREADY_TRIGGERED"] = "SAFETY_CHECK_SOS_ALREADY_TRIGGERED";
80
+ SafetyCheckErrorCode["INVALID_TRANSITION"] = "SAFETY_CHECK_INVALID_TRANSITION";
81
+ SafetyCheckErrorCode["INVALID_DURATION"] = "SAFETY_CHECK_INVALID_DURATION";
82
+ SafetyCheckErrorCode["MAX_DURATION_EXCEEDED"] = "SAFETY_CHECK_MAX_DURATION_EXCEEDED";
83
+ SafetyCheckErrorCode["INVALID_REASON"] = "SAFETY_CHECK_INVALID_REASON";
84
+ SafetyCheckErrorCode["CUSTOM_REASON_REQUIRED"] = "SAFETY_CHECK_CUSTOM_REASON_REQUIRED";
85
+ SafetyCheckErrorCode["GUARDIAN_NOT_FOUND"] = "SAFETY_CHECK_GUARDIAN_NOT_FOUND";
86
+ SafetyCheckErrorCode["GUARDIANS_UNAVAILABLE"] = "SAFETY_CHECK_GUARDIANS_UNAVAILABLE";
87
+ SafetyCheckErrorCode["NO_SOS_RECIPIENTS"] = "SAFETY_CHECK_NO_SOS_RECIPIENTS";
88
+ SafetyCheckErrorCode["SERVICE_PROVIDER_NOT_ENTITLED"] = "SAFETY_CHECK_SERVICE_PROVIDER_NOT_ENTITLED";
89
+ SafetyCheckErrorCode["TRACKING_CLOSED"] = "SAFETY_CHECK_TRACKING_CLOSED";
90
+ SafetyCheckErrorCode["RATE_LIMITED"] = "SAFETY_CHECK_RATE_LIMITED";
91
+ })(SafetyCheckErrorCode || (SafetyCheckErrorCode = {}));
92
+ //# 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;;;;;;;GAOG;AAEH,qFAAqF;AACrF,MAAM,CAAN,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,KAAjB,iBAAiB,QAU5B;AAED,wCAAwC;AACxC,MAAM,CAAN,IAAY,qBAGX;AAHD,WAAY,qBAAqB;IAC7B,4DAAmC,CAAA;IACnC,0DAAiC,CAAA;AACrC,CAAC,EAHW,qBAAqB,KAArB,qBAAqB,QAGhC;AAED,4CAA4C;AAC5C,MAAM,CAAN,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC5B,qCAAa,CAAA;IACb,6CAAqB,CAAA;IACrB,iDAAyB,CAAA;IACzB,yCAAiB,CAAA;AACrB,CAAC,EALW,oBAAoB,KAApB,oBAAoB,QAK/B;AAED,qDAAqD;AACrD,MAAM,CAAN,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,KAAzB,yBAAyB,QAiBpC;AAED,sDAAsD;AACtD,MAAM,CAAN,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,8CAA6B,CAAA;IAC7B,wCAAuB,CAAA;AAC3B,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,wEAAwE;AACxE,MAAM,CAAN,IAAY,0BAEX;AAFD,WAAY,0BAA0B;IAClC,6DAA+B,CAAA;AACnC,CAAC,EAFW,0BAA0B,KAA1B,0BAA0B,QAErC;AAED,4EAA4E;AAC5E,MAAM,CAAN,IAAY,sBAGX;AAHD,WAAY,sBAAsB;IAC9B,+DAAqC,CAAA;IACrC,yDAA+B,CAAA;AACnC,CAAC,EAHW,sBAAsB,KAAtB,sBAAsB,QAGjC;AAED,gEAAgE;AAChE,MAAM,CAAN,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,KAApB,oBAAoB,QAgB/B"}
@@ -0,0 +1,10 @@
1
+ // Enums
2
+ export * from './enums/safety-enums';
3
+ // Constants
4
+ export * from './constants/safety-check-limits.const';
5
+ export * from './constants/safety-taxonomy.const';
6
+ // Interfaces / DTOs
7
+ export * from './interfaces/safety-check.dto';
8
+ // Utilities
9
+ export * from './utils/safety-display.util';
10
+ //# 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,cAAc,sBAAsB,CAAC;AAErC,YAAY;AACZ,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAElD,oBAAoB;AACpB,cAAc,+BAA+B,CAAC;AAE9C,YAAY;AACZ,cAAc,6BAA6B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=safety-check.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety-check.dto.js","sourceRoot":"","sources":["../../../../../src/modules/safety/interfaces/safety-check.dto.ts"],"names":[],"mappings":""}
@@ -0,0 +1,89 @@
1
+ import { SafetyCheckActorType, SafetyCheckAuditEventType, SafetyCheckSosTrigger, SafetyCheckStatus, } from '../enums/safety-enums';
2
+ /**
3
+ * Human labels for the Safety enums, kept here so every screen that shows a
4
+ * Safety Check names the same state the same way.
5
+ */
6
+ export const SAFETY_CHECK_STATUS_LABELS = {
7
+ [SafetyCheckStatus.CREATED]: 'Starting',
8
+ [SafetyCheckStatus.ACTIVE]: 'In progress',
9
+ [SafetyCheckStatus.PROMPTING]: 'Awaiting check-in',
10
+ [SafetyCheckStatus.CHECKED_IN]: 'Checked in',
11
+ [SafetyCheckStatus.SOS_TRIGGERED]: 'SOS raised',
12
+ [SafetyCheckStatus.STOPPED]: 'Stopped',
13
+ [SafetyCheckStatus.EXPIRED]: 'Expired',
14
+ [SafetyCheckStatus.CANCELLED]: 'Cancelled',
15
+ [SafetyCheckStatus.FAILED]: 'SOS failed',
16
+ };
17
+ export const SAFETY_CHECK_SOS_TRIGGER_LABELS = {
18
+ [SafetyCheckSosTrigger.MISSED_CHECK_IN]: 'Missed check-in',
19
+ [SafetyCheckSosTrigger.USER_REQUESTED]: 'Requested by user',
20
+ };
21
+ export const SAFETY_CHECK_ACTOR_TYPE_LABELS = {
22
+ [SafetyCheckActorType.USER]: 'User',
23
+ [SafetyCheckActorType.WORKFLOW]: 'Timer',
24
+ [SafetyCheckActorType.RECONCILER]: 'Recovery sweep',
25
+ [SafetyCheckActorType.SYSTEM]: 'System',
26
+ };
27
+ export const SAFETY_CHECK_AUDIT_EVENT_LABELS = {
28
+ [SafetyCheckAuditEventType.CREATED]: 'Safety Check requested',
29
+ [SafetyCheckAuditEventType.ACTIVATED]: 'Safety Check started',
30
+ [SafetyCheckAuditEventType.TRACKING_STARTED]: 'Private location tracking started',
31
+ [SafetyCheckAuditEventType.TRACKING_UNAVAILABLE]: 'Location tracking unavailable',
32
+ [SafetyCheckAuditEventType.WORKFLOW_STARTED]: 'Check-in timer scheduled',
33
+ [SafetyCheckAuditEventType.WORKFLOW_START_FAILED]: 'Check-in timer could not be scheduled',
34
+ [SafetyCheckAuditEventType.EXTENDED]: 'Extended',
35
+ [SafetyCheckAuditEventType.PROMPT_STARTED]: 'Check-in prompt shown',
36
+ [SafetyCheckAuditEventType.CHECKED_IN]: 'User checked in',
37
+ [SafetyCheckAuditEventType.STOPPED]: 'Stopped by user',
38
+ [SafetyCheckAuditEventType.CANCELLED]: 'Cancelled',
39
+ [SafetyCheckAuditEventType.SOS_TRIGGERED]: 'SOS triggered',
40
+ [SafetyCheckAuditEventType.SOS_INCIDENT_CREATED]: 'SOS incident created',
41
+ [SafetyCheckAuditEventType.SOS_INCIDENT_RETRY]: 'SOS incident creation retried',
42
+ [SafetyCheckAuditEventType.SOS_FAILED]: 'SOS could not be raised',
43
+ [SafetyCheckAuditEventType.EXPIRED]: 'Expired without SOS',
44
+ };
45
+ export function safetyCheckStatusTone(status) {
46
+ switch (status) {
47
+ case SafetyCheckStatus.CHECKED_IN:
48
+ return 'success';
49
+ case SafetyCheckStatus.CREATED:
50
+ case SafetyCheckStatus.ACTIVE:
51
+ return 'info';
52
+ case SafetyCheckStatus.PROMPTING:
53
+ return 'warn';
54
+ case SafetyCheckStatus.SOS_TRIGGERED:
55
+ case SafetyCheckStatus.FAILED:
56
+ case SafetyCheckStatus.EXPIRED:
57
+ return 'danger';
58
+ default:
59
+ return 'neutral';
60
+ }
61
+ }
62
+ /** Whether the check is still running (the user is "in" it). */
63
+ export function isOpenSafetyCheck(status) {
64
+ return (status === SafetyCheckStatus.CREATED ||
65
+ status === SafetyCheckStatus.ACTIVE ||
66
+ status === SafetyCheckStatus.PROMPTING);
67
+ }
68
+ /** "15 min", "2 h", "1 h 30 min", "24 h". */
69
+ export function formatSafetyCheckDuration(minutes) {
70
+ if (minutes === null || minutes === undefined || !Number.isFinite(minutes) || minutes < 0)
71
+ return '—';
72
+ const whole = Math.round(minutes);
73
+ const hours = Math.floor(whole / 60);
74
+ const rest = whole % 60;
75
+ if (hours === 0)
76
+ return `${rest} min`;
77
+ if (rest === 0)
78
+ return `${hours} h`;
79
+ return `${hours} h ${rest} min`;
80
+ }
81
+ /** A distance in metres as the admin shows it. */
82
+ export function formatSafetyTripDistance(metres) {
83
+ if (metres === null || metres === undefined || !Number.isFinite(metres) || metres < 0)
84
+ return '—';
85
+ if (metres < 1000)
86
+ return `${Math.round(metres)} m`;
87
+ return `${(metres / 1000).toFixed(1)} km`;
88
+ }
89
+ //# sourceMappingURL=safety-display.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety-display.util.js","sourceRoot":"","sources":["../../../../../src/modules/safety/utils/safety-display.util.ts"],"names":[],"mappings":"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"}
@@ -22,5 +22,6 @@ export * from './modules/alert-dispatch/index';
22
22
  export * from './modules/alert-intake/index';
23
23
  export * from './modules/partner/index';
24
24
  export * from './modules/support/index';
25
+ export * from './modules/safety/index';
25
26
  export * from './modules/common/interfaces/server-message';
26
27
  export * from './modules/common/interfaces/pagination';
@@ -1,3 +1,4 @@
1
1
  export * from './enums/incident-dispatch-scope.enum';
2
2
  export * from './interfaces/alert-dispatch';
3
+ export * from './interfaces/guardian-audience';
3
4
  export * from './utils/alert-dispatch.util';
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Which of a reporter's guardians an alert is for. Mirrors grm-shared-library.
3
+ *
4
+ * Absent means EVERY guardian (the behaviour of a plain SOS). Present means
5
+ * exactly these guardians: a Safety Check's SOS goes only to the guardians the
6
+ * user ticked when they started it. App-user guardians are identified by user id,
7
+ * external contacts by their E.164 phone number.
8
+ */
9
+ export interface GuardianAudience {
10
+ systemGuardianUserIds: number[];
11
+ externalGuardianPhoneNumbers: string[];
12
+ }
@@ -4,5 +4,14 @@ export interface IncidentCategory {
4
4
  name: string;
5
5
  description?: string;
6
6
  organizationId: number;
7
+ /** Stable code of a platform-managed row (e.g. SAFETY_CHECK_SOS); null for an organization's own. */
8
+ code?: string | null;
9
+ /**
10
+ * Platform-managed (the Safety Alerts category and its types): provisioned for
11
+ * every organization, hidden from the SOS sheet and package configuration, and
12
+ * not editable or deletable. Lists include these rows only when asked with
13
+ * `includeSystem=true`.
14
+ */
15
+ isSystem?: boolean;
7
16
  types?: IncidentType[];
8
17
  }
@@ -5,5 +5,14 @@ export interface IncidentType {
5
5
  description?: string;
6
6
  categoryId?: number;
7
7
  organizationId: number;
8
+ /** Stable code of a platform-managed row (e.g. SAFETY_CHECK_SOS); null for an organization's own. */
9
+ code?: string | null;
10
+ /**
11
+ * Platform-managed (the Safety Alerts category and its types): provisioned for
12
+ * every organization, hidden from the SOS sheet and package configuration, and
13
+ * not editable or deletable. Lists include these rows only when asked with
14
+ * `includeSystem=true`.
15
+ */
16
+ isSystem?: boolean;
8
17
  category?: IncidentCategory;
9
18
  }
@@ -155,6 +155,15 @@ export declare enum PermissionActions {
155
155
  READ_PREMIUM_TRIAL = "read:premium-trial",
156
156
  GRANT_PREMIUM_TRIAL = "grant:premium-trial",
157
157
  REVOKE_PREMIUM_TRIAL = "revoke:premium-trial",
158
+ CREATE_NEWSFEED_POST = "create:newsfeed-post",
159
+ READ_NEWSFEED_POST = "read:newsfeed-post",
160
+ UPDATE_NEWSFEED_POST = "update:newsfeed-post",
161
+ PUBLISH_NEWSFEED_POST = "publish:newsfeed-post",
162
+ ARCHIVE_NEWSFEED_POST = "archive:newsfeed-post",
163
+ DELETE_NEWSFEED_POST = "delete:newsfeed-post",
164
+ READ_NEWSFEED_FEED = "read:newsfeed-feed",
165
+ ENGAGE_NEWSFEED_POST = "engage:newsfeed-post",
166
+ MODERATE_NEWSFEED_COMMENT = "moderate:newsfeed-comment",
158
167
  CREATE_ALERT_INTAKE_CONNECTION = "create:alert-intake-connection",
159
168
  READ_ALERT_INTAKE_CONNECTION = "read:alert-intake-connection",
160
169
  UPDATE_ALERT_INTAKE_CONNECTION = "update:alert-intake-connection",
@@ -166,6 +175,9 @@ export declare enum PermissionActions {
166
175
  REVIEW_ALERT_INTAKE_SCREENED_MESSAGE = "review:alert-intake-screened-message",
167
176
  READ_ALERT_INTAKE_ANALYTICS = "read:alert-intake-analytics",
168
177
  MANAGE_ALERT_INTAKE_PLATFORM = "manage:alert-intake-platform",
178
+ USE_SAFETY_CHECK = "use:safety-check",
179
+ READ_SAFETY_CHECK = "read:safety-check",
180
+ MANAGE_SAFETY_CHECK_REASON = "manage:safety-check-reason",
169
181
  /** @deprecated Retiring: split into the connection / message / screened-message / analytics actions. */
170
182
  READ_ALERT_INTAKE = "read:alert-intake",
171
183
  /** @deprecated Retiring: split into the connection / message / screened-message / analytics actions. */
@@ -9,7 +9,9 @@ export declare enum PermissionsModule {
9
9
  RESPONSE_UNIT = "Response Unit",
10
10
  TRACKING = "Tracking",
11
11
  BILLING = "Billing",
12
+ NEWSFEED = "Newsfeed",
12
13
  SUPPORT = "Support",
13
14
  NOTIFICATION = "Notification",
14
- ALERT_INTAKE = "Alert Intake"
15
+ ALERT_INTAKE = "Alert Intake",
16
+ SAFETY = "Safety"
15
17
  }
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The organization roles that RUN its newsfeed - write, publish, archive, delete
3
+ * and moderate. Mirrors grm-shared-library, where roles.spec.ts asserts each
4
+ * holds every Newsfeed action. The admin offers newsfeed changes only to these.
5
+ */
6
+ export declare const NEWSFEED_MANAGER_ROLES: string[];
7
+ /** Staff who may SEE the newsfeed as the admin shows it: the managers plus Organization:User. */
8
+ export declare const NEWSFEED_VIEWER_ROLES: string[];
@@ -0,0 +1,8 @@
1
+ /**
2
+ * The organization roles that curate the Safety Check reasons their app offers.
3
+ * Mirrors grm-shared-library, where roles.spec.ts asserts each holds
4
+ * manage:safety-check-reason. Platform-wide reasons are Super-Admin's alone.
5
+ */
6
+ export declare const SAFETY_MANAGER_ROLES: string[];
7
+ /** Staff who may read Safety Checks: the managers, and a control-centre admin within their control centre. */
8
+ export declare const SAFETY_VIEWER_ROLES: string[];
@@ -2,3 +2,5 @@ export * from './enums/role.enum';
2
2
  export * from './interfaces/role';
3
3
  export * from './constants/roles-by-scope';
4
4
  export * from './constants/billing-roles';
5
+ export * from './constants/newsfeed-roles';
6
+ export * from './constants/safety-roles';
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The Safety Check limits. Mirrors grm-shared-library, which is what the server
3
+ * enforces - the admin only displays them.
4
+ */
5
+ export declare const SAFETY_CHECK_LIMITS: {
6
+ readonly minDurationMinutes: 1;
7
+ readonly maxDurationMinutes: number;
8
+ readonly defaultDurationMinutes: 15;
9
+ readonly presetDurationsMinutes: readonly number[];
10
+ readonly minPromptCountdownSeconds: 15;
11
+ readonly maxPromptCountdownSeconds: number;
12
+ readonly defaultPromptCountdownSeconds: 60;
13
+ readonly checkInGraceSeconds: 10;
14
+ readonly staleSosWindowMinutes: number;
15
+ readonly customReasonMaxLength: 120;
16
+ readonly maxTrackPointsPerBatch: 200;
17
+ };
18
+ export declare const SAFETY_CHECK_DEFAULTS: {
19
+ readonly durationMinutes: 15;
20
+ readonly promptCountdownSeconds: 60;
21
+ readonly allGuardiansSelected: true;
22
+ readonly notifyServiceProvider: true;
23
+ readonly notifyGuardiansOnStartEnd: true;
24
+ readonly vibrate: true;
25
+ readonly alarmSound: true;
26
+ };
27
+ /** States in which the user is "in a Safety Check". */
28
+ export declare const OPEN_SAFETY_CHECK_STATUS_VALUES: readonly string[];
29
+ /** Upper-snake reason code, as the backend validates it. */
30
+ export declare const SAFETY_CHECK_REASON_CODE_PATTERN: RegExp;
@@ -0,0 +1,19 @@
1
+ import { SafetyIncidentCategoryCode, SafetyIncidentTypeCode } from '../enums/safety-enums';
2
+ /**
3
+ * Names of the platform-managed Safety Alerts category and types, as
4
+ * clarion-incident provisions them for every organization. The admin shows these
5
+ * rows read-only (they carry `isSystem: true`).
6
+ */
7
+ export declare const SAFETY_ALERTS_TAXONOMY_NAMES: {
8
+ readonly category: {
9
+ readonly code: SafetyIncidentCategoryCode;
10
+ readonly name: "Safety Alerts";
11
+ };
12
+ readonly types: readonly [{
13
+ readonly code: SafetyIncidentTypeCode.SAFETY_CHECK_SOS;
14
+ readonly name: "Safety Check SOS";
15
+ }, {
16
+ readonly code: SafetyIncidentTypeCode.FOLLOW_ME_SOS;
17
+ readonly name: "Follow Me SOS";
18
+ }];
19
+ };
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Frontend mirrors of the Safety enums in grm-shared-library.
3
+ *
4
+ * Kept in ONE file: the admin's Safety Features screens import them together.
5
+ * Values are byte-identical to the backend's, because they travel over the wire
6
+ * as strings and any drift would show up as a silently unstyled chip rather than
7
+ * a compile error (safety-display.spec.ts pins them).
8
+ */
9
+ /** Lifecycle of one Safety Check. See the backend enum for what each state means. */
10
+ export declare enum SafetyCheckStatus {
11
+ CREATED = "CREATED",
12
+ ACTIVE = "ACTIVE",
13
+ PROMPTING = "PROMPTING",
14
+ CHECKED_IN = "CHECKED_IN",
15
+ SOS_TRIGGERED = "SOS_TRIGGERED",
16
+ STOPPED = "STOPPED",
17
+ EXPIRED = "EXPIRED",
18
+ CANCELLED = "CANCELLED",
19
+ FAILED = "FAILED"
20
+ }
21
+ /** Why a Safety Check raised an SOS. */
22
+ export declare enum SafetyCheckSosTrigger {
23
+ MISSED_CHECK_IN = "MISSED_CHECK_IN",
24
+ USER_REQUESTED = "USER_REQUESTED"
25
+ }
26
+ /** Who caused a Safety Check transition. */
27
+ export declare enum SafetyCheckActorType {
28
+ USER = "USER",
29
+ WORKFLOW = "WORKFLOW",
30
+ RECONCILER = "RECONCILER",
31
+ SYSTEM = "SYSTEM"
32
+ }
33
+ /** Audit trail entries. Never carries a location. */
34
+ export declare enum SafetyCheckAuditEventType {
35
+ CREATED = "CREATED",
36
+ ACTIVATED = "ACTIVATED",
37
+ TRACKING_STARTED = "TRACKING_STARTED",
38
+ TRACKING_UNAVAILABLE = "TRACKING_UNAVAILABLE",
39
+ WORKFLOW_STARTED = "WORKFLOW_STARTED",
40
+ WORKFLOW_START_FAILED = "WORKFLOW_START_FAILED",
41
+ EXTENDED = "EXTENDED",
42
+ PROMPT_STARTED = "PROMPT_STARTED",
43
+ CHECKED_IN = "CHECKED_IN",
44
+ STOPPED = "STOPPED",
45
+ CANCELLED = "CANCELLED",
46
+ SOS_TRIGGERED = "SOS_TRIGGERED",
47
+ SOS_INCIDENT_CREATED = "SOS_INCIDENT_CREATED",
48
+ SOS_INCIDENT_RETRY = "SOS_INCIDENT_RETRY",
49
+ SOS_FAILED = "SOS_FAILED",
50
+ EXPIRED = "EXPIRED"
51
+ }
52
+ /** The safety features that can raise an incident. */
53
+ export declare enum SafetyFeature {
54
+ SAFETY_CHECK = "SAFETY_CHECK",
55
+ FOLLOW_ME = "FOLLOW_ME"
56
+ }
57
+ /** Stable code of the incident category every organization receives. */
58
+ export declare enum SafetyIncidentCategoryCode {
59
+ SAFETY_ALERTS = "SAFETY_ALERTS"
60
+ }
61
+ /** Stable codes of the incident types inside the Safety Alerts category. */
62
+ export declare enum SafetyIncidentTypeCode {
63
+ SAFETY_CHECK_SOS = "SAFETY_CHECK_SOS",
64
+ FOLLOW_ME_SOS = "FOLLOW_ME_SOS"
65
+ }
66
+ /** Machine-readable `code` on errors clarion-safety returns. */
67
+ export declare enum SafetyCheckErrorCode {
68
+ NOT_FOUND = "SAFETY_CHECK_NOT_FOUND",
69
+ ALREADY_ACTIVE = "SAFETY_CHECK_ALREADY_ACTIVE",
70
+ ALREADY_ENDED = "SAFETY_CHECK_ENDED",
71
+ SOS_ALREADY_TRIGGERED = "SAFETY_CHECK_SOS_ALREADY_TRIGGERED",
72
+ INVALID_TRANSITION = "SAFETY_CHECK_INVALID_TRANSITION",
73
+ INVALID_DURATION = "SAFETY_CHECK_INVALID_DURATION",
74
+ MAX_DURATION_EXCEEDED = "SAFETY_CHECK_MAX_DURATION_EXCEEDED",
75
+ INVALID_REASON = "SAFETY_CHECK_INVALID_REASON",
76
+ CUSTOM_REASON_REQUIRED = "SAFETY_CHECK_CUSTOM_REASON_REQUIRED",
77
+ GUARDIAN_NOT_FOUND = "SAFETY_CHECK_GUARDIAN_NOT_FOUND",
78
+ GUARDIANS_UNAVAILABLE = "SAFETY_CHECK_GUARDIANS_UNAVAILABLE",
79
+ NO_SOS_RECIPIENTS = "SAFETY_CHECK_NO_SOS_RECIPIENTS",
80
+ SERVICE_PROVIDER_NOT_ENTITLED = "SAFETY_CHECK_SERVICE_PROVIDER_NOT_ENTITLED",
81
+ TRACKING_CLOSED = "SAFETY_CHECK_TRACKING_CLOSED",
82
+ RATE_LIMITED = "SAFETY_CHECK_RATE_LIMITED"
83
+ }
@@ -0,0 +1,5 @@
1
+ export * from './enums/safety-enums';
2
+ export * from './constants/safety-check-limits.const';
3
+ export * from './constants/safety-taxonomy.const';
4
+ export * from './interfaces/safety-check.dto';
5
+ export * from './utils/safety-display.util';