grm-shared-library 1.1.221 → 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/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 +8 -0
- package/dist/cjs/modules/permission/data/permissions.data.js.map +1 -1
- package/dist/cjs/modules/permission/enums/permission-actions.enum.js +12 -0
- 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/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 +38 -6
- package/dist/cjs/modules/role/data/roles.data.js.map +1 -1
- package/dist/cjs/modules/role/index.js +1 -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 +8 -0
- package/dist/esm/modules/permission/data/permissions.data.js.map +1 -1
- package/dist/esm/modules/permission/enums/permission-actions.enum.js +12 -0
- 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/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 +38 -6
- package/dist/esm/modules/role/data/roles.data.js.map +1 -1
- package/dist/esm/modules/role/index.js +1 -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 +3 -0
- package/dist/types/modules/permission/enums/permissions-module.enum.d.ts +2 -1
- package/dist/types/modules/role/constants/safety-roles.d.ts +14 -0
- package/dist/types/modules/role/index.d.ts +1 -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,161 @@
|
|
|
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, ApiPropertyOptional } from '@nestjs/swagger';
|
|
11
|
+
import { Transform, Type } from 'class-transformer';
|
|
12
|
+
import { ArrayMaxSize, ArrayMinSize, IsArray, IsBoolean, IsDateString, IsInt, IsNotEmptyObject, IsNumber, IsOptional, IsString, IsUUID, Max, MaxLength, Min, ValidateNested, } from 'class-validator';
|
|
13
|
+
import { GuardianAudienceDto } from '../../alert-dispatch/dtos/guardian-audience.dto';
|
|
14
|
+
import { SAFETY_CHECK_LIMITS } from '../constants/safety-check-limits.const';
|
|
15
|
+
const trim = ({ value }) => (typeof value === 'string' ? value.trim() : value);
|
|
16
|
+
/** A device-reported position. Never logged by any Safety service. */
|
|
17
|
+
export class SafetyCheckLocationDto {
|
|
18
|
+
}
|
|
19
|
+
__decorate([
|
|
20
|
+
ApiProperty({ example: -1.2921 }),
|
|
21
|
+
Type(() => Number),
|
|
22
|
+
IsNumber(),
|
|
23
|
+
Min(-90),
|
|
24
|
+
Max(90),
|
|
25
|
+
__metadata("design:type", Number)
|
|
26
|
+
], SafetyCheckLocationDto.prototype, "lat", void 0);
|
|
27
|
+
__decorate([
|
|
28
|
+
ApiProperty({ example: 36.8219 }),
|
|
29
|
+
Type(() => Number),
|
|
30
|
+
IsNumber(),
|
|
31
|
+
Min(-180),
|
|
32
|
+
Max(180),
|
|
33
|
+
__metadata("design:type", Number)
|
|
34
|
+
], SafetyCheckLocationDto.prototype, "lng", void 0);
|
|
35
|
+
__decorate([
|
|
36
|
+
ApiPropertyOptional({ description: 'Horizontal accuracy in metres', example: 8 }),
|
|
37
|
+
Type(() => Number),
|
|
38
|
+
IsNumber(),
|
|
39
|
+
Min(0),
|
|
40
|
+
Max(100000),
|
|
41
|
+
IsOptional(),
|
|
42
|
+
__metadata("design:type", Number)
|
|
43
|
+
], SafetyCheckLocationDto.prototype, "accuracy", void 0);
|
|
44
|
+
/**
|
|
45
|
+
* Starting a Safety Check.
|
|
46
|
+
*
|
|
47
|
+
* Nothing here is trusted beyond its shape: clarion-safety re-checks the reason
|
|
48
|
+
* against the database, every guardian against clarion-authentication, and the
|
|
49
|
+
* provider option against clarion-billing. The duration is bounded here AND in
|
|
50
|
+
* the domain.
|
|
51
|
+
*/
|
|
52
|
+
export class StartSafetyCheckDto {
|
|
53
|
+
}
|
|
54
|
+
__decorate([
|
|
55
|
+
ApiProperty({ description: 'A reason from GET /safety/check-reasons', format: 'uuid' }),
|
|
56
|
+
IsUUID(),
|
|
57
|
+
__metadata("design:type", String)
|
|
58
|
+
], StartSafetyCheckDto.prototype, "reasonId", void 0);
|
|
59
|
+
__decorate([
|
|
60
|
+
ApiPropertyOptional({
|
|
61
|
+
description: 'Required when the chosen reason is the "Write my own" entry; ignored otherwise.',
|
|
62
|
+
maxLength: SAFETY_CHECK_LIMITS.customReasonMaxLength,
|
|
63
|
+
}),
|
|
64
|
+
Transform(trim),
|
|
65
|
+
IsString(),
|
|
66
|
+
MaxLength(SAFETY_CHECK_LIMITS.customReasonMaxLength),
|
|
67
|
+
IsOptional(),
|
|
68
|
+
__metadata("design:type", String)
|
|
69
|
+
], StartSafetyCheckDto.prototype, "customReason", void 0);
|
|
70
|
+
__decorate([
|
|
71
|
+
ApiProperty({
|
|
72
|
+
minimum: SAFETY_CHECK_LIMITS.minDurationMinutes,
|
|
73
|
+
maximum: SAFETY_CHECK_LIMITS.maxDurationMinutes,
|
|
74
|
+
example: SAFETY_CHECK_LIMITS.defaultDurationMinutes,
|
|
75
|
+
}),
|
|
76
|
+
Type(() => Number),
|
|
77
|
+
IsInt(),
|
|
78
|
+
Min(SAFETY_CHECK_LIMITS.minDurationMinutes),
|
|
79
|
+
Max(SAFETY_CHECK_LIMITS.maxDurationMinutes),
|
|
80
|
+
__metadata("design:type", Number)
|
|
81
|
+
], StartSafetyCheckDto.prototype, "durationMinutes", void 0);
|
|
82
|
+
__decorate([
|
|
83
|
+
ApiPropertyOptional({
|
|
84
|
+
description: 'How long the check-in prompt counts down before the SOS. The user sets this in the app.',
|
|
85
|
+
minimum: SAFETY_CHECK_LIMITS.minPromptCountdownSeconds,
|
|
86
|
+
maximum: SAFETY_CHECK_LIMITS.maxPromptCountdownSeconds,
|
|
87
|
+
default: SAFETY_CHECK_LIMITS.defaultPromptCountdownSeconds,
|
|
88
|
+
}),
|
|
89
|
+
Type(() => Number),
|
|
90
|
+
IsInt(),
|
|
91
|
+
Min(SAFETY_CHECK_LIMITS.minPromptCountdownSeconds),
|
|
92
|
+
Max(SAFETY_CHECK_LIMITS.maxPromptCountdownSeconds),
|
|
93
|
+
IsOptional(),
|
|
94
|
+
__metadata("design:type", Number)
|
|
95
|
+
], StartSafetyCheckDto.prototype, "promptCountdownSeconds", void 0);
|
|
96
|
+
__decorate([
|
|
97
|
+
ApiProperty({
|
|
98
|
+
type: GuardianAudienceDto,
|
|
99
|
+
description: 'The guardians told about the start/end and alerted by the SOS. Every one must be the user\'s guardian.',
|
|
100
|
+
}),
|
|
101
|
+
IsNotEmptyObject(),
|
|
102
|
+
ValidateNested(),
|
|
103
|
+
Type(() => GuardianAudienceDto),
|
|
104
|
+
__metadata("design:type", GuardianAudienceDto)
|
|
105
|
+
], StartSafetyCheckDto.prototype, "guardians", void 0);
|
|
106
|
+
__decorate([
|
|
107
|
+
ApiProperty({ description: 'Alert the service provider if the SOS is raised. Refused for users without premium.' }),
|
|
108
|
+
IsBoolean(),
|
|
109
|
+
__metadata("design:type", Boolean)
|
|
110
|
+
], StartSafetyCheckDto.prototype, "notifyServiceProvider", void 0);
|
|
111
|
+
__decorate([
|
|
112
|
+
ApiProperty({ description: 'Tell the selected guardians when the check starts and ends. Never affects the SOS.' }),
|
|
113
|
+
IsBoolean(),
|
|
114
|
+
__metadata("design:type", Boolean)
|
|
115
|
+
], StartSafetyCheckDto.prototype, "notifyGuardiansOnStartEnd", void 0);
|
|
116
|
+
__decorate([
|
|
117
|
+
ApiPropertyOptional({ type: SafetyCheckLocationDto, description: 'Where the user is as they start.' }),
|
|
118
|
+
ValidateNested(),
|
|
119
|
+
Type(() => SafetyCheckLocationDto),
|
|
120
|
+
IsOptional(),
|
|
121
|
+
__metadata("design:type", SafetyCheckLocationDto)
|
|
122
|
+
], StartSafetyCheckDto.prototype, "startLocation", void 0);
|
|
123
|
+
export class ExtendSafetyCheckDto {
|
|
124
|
+
}
|
|
125
|
+
__decorate([
|
|
126
|
+
ApiProperty({ minimum: 1, maximum: SAFETY_CHECK_LIMITS.maxDurationMinutes, example: 15 }),
|
|
127
|
+
Type(() => Number),
|
|
128
|
+
IsInt(),
|
|
129
|
+
Min(1),
|
|
130
|
+
Max(SAFETY_CHECK_LIMITS.maxDurationMinutes),
|
|
131
|
+
__metadata("design:type", Number)
|
|
132
|
+
], ExtendSafetyCheckDto.prototype, "additionalMinutes", void 0);
|
|
133
|
+
/** Body of check-in, stop and manual SOS. The location is optional context. */
|
|
134
|
+
export class SafetyCheckActionDto {
|
|
135
|
+
}
|
|
136
|
+
__decorate([
|
|
137
|
+
ApiPropertyOptional({ type: SafetyCheckLocationDto }),
|
|
138
|
+
ValidateNested(),
|
|
139
|
+
Type(() => SafetyCheckLocationDto),
|
|
140
|
+
IsOptional(),
|
|
141
|
+
__metadata("design:type", SafetyCheckLocationDto)
|
|
142
|
+
], SafetyCheckActionDto.prototype, "location", void 0);
|
|
143
|
+
export class SafetyCheckTrackPointDto extends SafetyCheckLocationDto {
|
|
144
|
+
}
|
|
145
|
+
__decorate([
|
|
146
|
+
ApiProperty({ description: 'When the device took the fix (ISO 8601)', example: '2026-09-28T10:15:00.000Z' }),
|
|
147
|
+
IsDateString(),
|
|
148
|
+
__metadata("design:type", String)
|
|
149
|
+
], SafetyCheckTrackPointDto.prototype, "timestamp", void 0);
|
|
150
|
+
export class SafetyCheckTrackPointsDto {
|
|
151
|
+
}
|
|
152
|
+
__decorate([
|
|
153
|
+
ApiProperty({ type: [SafetyCheckTrackPointDto] }),
|
|
154
|
+
IsArray(),
|
|
155
|
+
ArrayMinSize(1),
|
|
156
|
+
ArrayMaxSize(SAFETY_CHECK_LIMITS.maxTrackPointsPerBatch),
|
|
157
|
+
ValidateNested({ each: true }),
|
|
158
|
+
Type(() => SafetyCheckTrackPointDto),
|
|
159
|
+
__metadata("design:type", Array)
|
|
160
|
+
], SafetyCheckTrackPointsDto.prototype, "points", void 0);
|
|
161
|
+
//# sourceMappingURL=safety-check.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety-check.dto.js","sourceRoot":"","sources":["../../../../../src/modules/safety/dtos/safety-check.dto.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACH,YAAY,EACZ,YAAY,EACZ,OAAO,EACP,SAAS,EACT,YAAY,EACZ,KAAK,EACL,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,MAAM,EACN,GAAG,EACH,SAAS,EACT,GAAG,EACH,cAAc,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAE7E,MAAM,IAAI,GAAG,CAAC,EAAE,KAAK,EAAsB,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAEnG,sEAAsE;AACtE,MAAM,OAAO,sBAAsB;CAsBlC;AAhBG;IALC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,CAAC;IACjC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,EAAE,CAAC;IACR,GAAG,CAAC,EAAE,CAAC;;mDACK;AAOb;IALC,WAAW,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACjC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,GAAG,CAAC;IACT,GAAG,CAAC,GAAG,CAAC;;mDACI;AAQb;IANC,mBAAmB,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACjF,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,MAAO,CAAC;IACZ,UAAU,EAAE;;wDACK;AAGtB;;;;;;;GAOG;AACH,MAAM,OAAO,mBAAmB;CA6D/B;AA1DG;IAFC,WAAW,CAAC,EAAE,WAAW,EAAE,yCAAyC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACvF,MAAM,EAAE;;qDACS;AAUlB;IARC,mBAAmB,CAAC;QACjB,WAAW,EAAE,iFAAiF;QAC9F,SAAS,EAAE,mBAAmB,CAAC,qBAAqB;KACvD,CAAC;IACD,SAAS,CAAC,IAAI,CAAC;IACf,QAAQ,EAAE;IACV,SAAS,CAAC,mBAAmB,CAAC,qBAAqB,CAAC;IACpD,UAAU,EAAE;;yDACS;AAWtB;IATC,WAAW,CAAC;QACT,OAAO,EAAE,mBAAmB,CAAC,kBAAkB;QAC/C,OAAO,EAAE,mBAAmB,CAAC,kBAAkB;QAC/C,OAAO,EAAE,mBAAmB,CAAC,sBAAsB;KACtD,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,GAAG,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;IAC3C,GAAG,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;;4DACnB;AAazB;IAXC,mBAAmB,CAAC;QACjB,WAAW,EAAE,yFAAyF;QACtG,OAAO,EAAE,mBAAmB,CAAC,yBAAyB;QACtD,OAAO,EAAE,mBAAmB,CAAC,yBAAyB;QACtD,OAAO,EAAE,mBAAmB,CAAC,6BAA6B;KAC7D,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,GAAG,CAAC,mBAAmB,CAAC,yBAAyB,CAAC;IAClD,GAAG,CAAC,mBAAmB,CAAC,yBAAyB,CAAC;IAClD,UAAU,EAAE;;mEACmB;AAShC;IAPC,WAAW,CAAC;QACT,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,wGAAwG;KACxH,CAAC;IACD,gBAAgB,EAAE;IAClB,cAAc,EAAE;IAChB,IAAI,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC;8BACpB,mBAAmB;sDAAC;AAIhC;IAFC,WAAW,CAAC,EAAE,WAAW,EAAE,qFAAqF,EAAE,CAAC;IACnH,SAAS,EAAE;;kEACoB;AAIhC;IAFC,WAAW,CAAC,EAAE,WAAW,EAAE,oFAAoF,EAAE,CAAC;IAClH,SAAS,EAAE;;sEACwB;AAMpC;IAJC,mBAAmB,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC;IACtG,cAAc,EAAE;IAChB,IAAI,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;IAClC,UAAU,EAAE;8BACG,sBAAsB;0DAAC;AAG3C,MAAM,OAAO,oBAAoB;CAOhC;AADG;IALC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,mBAAmB,CAAC,kBAAkB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACzF,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,mBAAmB,CAAC,kBAAkB,CAAC;;+DACjB;AAG/B,+EAA+E;AAC/E,MAAM,OAAO,oBAAoB;CAMhC;AADG;IAJC,mBAAmB,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,CAAC;IACrD,cAAc,EAAE;IAChB,IAAI,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;IAClC,UAAU,EAAE;8BACF,sBAAsB;sDAAC;AAGtC,MAAM,OAAO,wBAAyB,SAAQ,sBAAsB;CAInE;AADG;IAFC,WAAW,CAAC,EAAE,WAAW,EAAE,yCAAyC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;IAC5G,YAAY,EAAE;;2DACI;AAGvB,MAAM,OAAO,yBAAyB;CAQrC;AADG;IANC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,wBAAwB,CAAC,EAAE,CAAC;IACjD,OAAO,EAAE;IACT,YAAY,CAAC,CAAC,CAAC;IACf,YAAY,CAAC,mBAAmB,CAAC,sBAAsB,CAAC;IACxD,cAAc,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,EAAE,CAAC,wBAAwB,CAAC;;yDACD"}
|
|
@@ -0,0 +1,155 @@
|
|
|
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, ApiPropertyOptional } from '@nestjs/swagger';
|
|
11
|
+
import { Transform, Type } from 'class-transformer';
|
|
12
|
+
import { ArrayMaxSize, IsArray, IsBoolean, IsDateString, IsEnum, IsInt, IsNotEmptyObject, IsOptional, IsPositive, IsString, IsUUID, MaxLength, ValidateNested, } from 'class-validator';
|
|
13
|
+
import { GuardianAudienceDto } from '../../alert-dispatch/dtos/guardian-audience.dto';
|
|
14
|
+
import { SafetyCheckSosTrigger, SafetyFeature } from '../enums/safety-enums';
|
|
15
|
+
import { SafetyCheckLocationDto } from './safety-check.dto';
|
|
16
|
+
const trim = ({ value }) => (typeof value === 'string' ? value.trim() : value);
|
|
17
|
+
/**
|
|
18
|
+
* clarion-safety -> clarion-incident: raise the SOS for a safety feature.
|
|
19
|
+
*
|
|
20
|
+
* Internal only (never proxied by the gateway) and token-protected. Idempotent on
|
|
21
|
+
* (feature, originReferenceId): a retry - from a workflow, the sweeper, or a user
|
|
22
|
+
* pressing twice - returns the incident the first call created.
|
|
23
|
+
*
|
|
24
|
+
* clarion-incident builds the incident itself: the reporter from the user's
|
|
25
|
+
* account, the Safety Alerts category and type from the organization's system
|
|
26
|
+
* rows, and entitlement/dispatch through the same pipeline as every SOS. The
|
|
27
|
+
* caller cannot choose a type, a class or an entitlement tier.
|
|
28
|
+
*/
|
|
29
|
+
export class CreateSafetyAlertIncidentDto {
|
|
30
|
+
}
|
|
31
|
+
__decorate([
|
|
32
|
+
ApiProperty({ enum: SafetyFeature }),
|
|
33
|
+
IsEnum(SafetyFeature),
|
|
34
|
+
__metadata("design:type", String)
|
|
35
|
+
], CreateSafetyAlertIncidentDto.prototype, "feature", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
ApiProperty({ description: 'The safety record that raised it (a Safety Check id)', format: 'uuid' }),
|
|
38
|
+
IsUUID(),
|
|
39
|
+
__metadata("design:type", String)
|
|
40
|
+
], CreateSafetyAlertIncidentDto.prototype, "originReferenceId", void 0);
|
|
41
|
+
__decorate([
|
|
42
|
+
ApiProperty({ enum: SafetyCheckSosTrigger }),
|
|
43
|
+
IsEnum(SafetyCheckSosTrigger),
|
|
44
|
+
__metadata("design:type", String)
|
|
45
|
+
], CreateSafetyAlertIncidentDto.prototype, "trigger", void 0);
|
|
46
|
+
__decorate([
|
|
47
|
+
ApiProperty(),
|
|
48
|
+
Type(() => Number),
|
|
49
|
+
IsInt(),
|
|
50
|
+
IsPositive(),
|
|
51
|
+
__metadata("design:type", Number)
|
|
52
|
+
], CreateSafetyAlertIncidentDto.prototype, "organizationId", void 0);
|
|
53
|
+
__decorate([
|
|
54
|
+
ApiProperty({ description: 'The user in danger - the reporter of the SOS' }),
|
|
55
|
+
Type(() => Number),
|
|
56
|
+
IsInt(),
|
|
57
|
+
IsPositive(),
|
|
58
|
+
__metadata("design:type", Number)
|
|
59
|
+
], CreateSafetyAlertIncidentDto.prototype, "userId", void 0);
|
|
60
|
+
__decorate([
|
|
61
|
+
ApiProperty({ description: 'The brand the user signed in through (IncidentAppId value)', example: 'G4S' }),
|
|
62
|
+
IsString(),
|
|
63
|
+
MaxLength(50),
|
|
64
|
+
__metadata("design:type", String)
|
|
65
|
+
], CreateSafetyAlertIncidentDto.prototype, "appId", void 0);
|
|
66
|
+
__decorate([
|
|
67
|
+
ApiPropertyOptional(),
|
|
68
|
+
Type(() => Number),
|
|
69
|
+
IsInt(),
|
|
70
|
+
IsPositive(),
|
|
71
|
+
IsOptional(),
|
|
72
|
+
__metadata("design:type", Number)
|
|
73
|
+
], CreateSafetyAlertIncidentDto.prototype, "controlCentreId", void 0);
|
|
74
|
+
__decorate([
|
|
75
|
+
ApiPropertyOptional({ type: SafetyCheckLocationDto, description: 'Last known position, when there is one' }),
|
|
76
|
+
ValidateNested(),
|
|
77
|
+
Type(() => SafetyCheckLocationDto),
|
|
78
|
+
IsOptional(),
|
|
79
|
+
__metadata("design:type", SafetyCheckLocationDto)
|
|
80
|
+
], CreateSafetyAlertIncidentDto.prototype, "location", void 0);
|
|
81
|
+
__decorate([
|
|
82
|
+
ApiProperty({ description: 'What the user asked for. Entitlement at raise time decides what happens.' }),
|
|
83
|
+
IsBoolean(),
|
|
84
|
+
__metadata("design:type", Boolean)
|
|
85
|
+
], CreateSafetyAlertIncidentDto.prototype, "notifyServiceProvider", void 0);
|
|
86
|
+
__decorate([
|
|
87
|
+
ApiProperty({ type: GuardianAudienceDto, description: 'Exactly the guardians the user selected' }),
|
|
88
|
+
IsNotEmptyObject(),
|
|
89
|
+
ValidateNested(),
|
|
90
|
+
Type(() => GuardianAudienceDto),
|
|
91
|
+
__metadata("design:type", GuardianAudienceDto)
|
|
92
|
+
], CreateSafetyAlertIncidentDto.prototype, "guardianAudience", void 0);
|
|
93
|
+
__decorate([
|
|
94
|
+
ApiPropertyOptional({ description: 'The private trip recorded during the check; it becomes the incident trip', format: 'uuid' }),
|
|
95
|
+
IsUUID(),
|
|
96
|
+
IsOptional(),
|
|
97
|
+
__metadata("design:type", String)
|
|
98
|
+
], CreateSafetyAlertIncidentDto.prototype, "tripId", void 0);
|
|
99
|
+
__decorate([
|
|
100
|
+
ApiPropertyOptional({ maxLength: 500 }),
|
|
101
|
+
Transform(trim),
|
|
102
|
+
IsString(),
|
|
103
|
+
MaxLength(500),
|
|
104
|
+
IsOptional(),
|
|
105
|
+
__metadata("design:type", String)
|
|
106
|
+
], CreateSafetyAlertIncidentDto.prototype, "description", void 0);
|
|
107
|
+
/** clarion-safety -> clarion-workflow-manager: start the durable timer. Idempotent per check. */
|
|
108
|
+
export class StartSafetyCheckWorkflowDto {
|
|
109
|
+
}
|
|
110
|
+
__decorate([
|
|
111
|
+
ApiProperty({ format: 'uuid' }),
|
|
112
|
+
IsUUID(),
|
|
113
|
+
__metadata("design:type", String)
|
|
114
|
+
], StartSafetyCheckWorkflowDto.prototype, "safetyCheckId", void 0);
|
|
115
|
+
__decorate([
|
|
116
|
+
ApiProperty({ description: 'When the workflow should first call advance (ISO 8601)' }),
|
|
117
|
+
IsDateString(),
|
|
118
|
+
__metadata("design:type", String)
|
|
119
|
+
], StartSafetyCheckWorkflowDto.prototype, "firstWakeAt", void 0);
|
|
120
|
+
/**
|
|
121
|
+
* clarion-safety -> clarion-workflow-manager: something changed. Purely an
|
|
122
|
+
* optimisation - a lost signal only means the workflow wakes at its previous
|
|
123
|
+
* time and asks clarion-safety, which answers with the truth.
|
|
124
|
+
*/
|
|
125
|
+
export class SignalSafetyCheckWorkflowDto {
|
|
126
|
+
}
|
|
127
|
+
__decorate([
|
|
128
|
+
ApiPropertyOptional({ description: 'The check is over; the workflow may finish.' }),
|
|
129
|
+
IsBoolean(),
|
|
130
|
+
IsOptional(),
|
|
131
|
+
__metadata("design:type", Boolean)
|
|
132
|
+
], SignalSafetyCheckWorkflowDto.prototype, "done", void 0);
|
|
133
|
+
__decorate([
|
|
134
|
+
ApiPropertyOptional({ description: 'New wake time (after an extension)' }),
|
|
135
|
+
IsDateString(),
|
|
136
|
+
IsOptional(),
|
|
137
|
+
__metadata("design:type", String)
|
|
138
|
+
], SignalSafetyCheckWorkflowDto.prototype, "nextWakeAt", void 0);
|
|
139
|
+
/**
|
|
140
|
+
* clarion-billing -> clarion-incident: which of these incident type ids are
|
|
141
|
+
* platform-managed system types (the Safety SOS types). Billing refuses to put
|
|
142
|
+
* those in a package, whatever the admin UI shows.
|
|
143
|
+
*/
|
|
144
|
+
export class ClassifyIncidentTypesDto {
|
|
145
|
+
}
|
|
146
|
+
__decorate([
|
|
147
|
+
ApiProperty({ type: [Number] }),
|
|
148
|
+
IsArray(),
|
|
149
|
+
ArrayMaxSize(500),
|
|
150
|
+
Type(() => Number),
|
|
151
|
+
IsInt({ each: true }),
|
|
152
|
+
IsPositive({ each: true }),
|
|
153
|
+
__metadata("design:type", Array)
|
|
154
|
+
], ClassifyIncidentTypesDto.prototype, "ids", void 0);
|
|
155
|
+
//# sourceMappingURL=safety-internal.dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"safety-internal.dto.js","sourceRoot":"","sources":["../../../../../src/modules/safety/dtos/safety-internal.dto.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lifecycle of one Safety Check. clarion-safety is the only writer; every
|
|
3
|
+
* transition is validated against SAFETY_CHECK_TRANSITIONS
|
|
4
|
+
* (utils/safety-check-state-machine.ts) and applied as a conditional update, so
|
|
5
|
+
* two racing writers can never both win.
|
|
6
|
+
*
|
|
7
|
+
* CREATED accepted and persisted; tracking and the durable timer are
|
|
8
|
+
* still being set up. The user already counts as being in a
|
|
9
|
+
* check (the clock started when it was accepted).
|
|
10
|
+
* ACTIVE running; the user is expected to check in at
|
|
11
|
+
* scheduledCheckInAt.
|
|
12
|
+
* PROMPTING the check-in time has passed and the user is being asked to
|
|
13
|
+
* confirm they are safe. SOS is raised at promptDeadlineAt.
|
|
14
|
+
* CHECKED_IN the user confirmed they are safe. Terminal, successful.
|
|
15
|
+
* SOS_TRIGGERED an SOS was raised - the user missed the check-in or asked for
|
|
16
|
+
* one. Terminal for the check; the incident lives on in
|
|
17
|
+
* clarion-incident. `incidentId` is null until the incident
|
|
18
|
+
* has been created (clarion-safety keeps retrying).
|
|
19
|
+
* STOPPED the user ended the check before it completed. Terminal.
|
|
20
|
+
* EXPIRED the check-in window closed so long ago (a platform outage
|
|
21
|
+
* longer than SAFETY_CHECK_LIMITS.staleSosWindowMinutes) that
|
|
22
|
+
* raising an SOS now would be noise rather than help. Terminal;
|
|
23
|
+
* always an operational alarm.
|
|
24
|
+
* CANCELLED ended by the platform rather than the user (e.g. the account
|
|
25
|
+
* was signed out and the user chose to end it). Terminal.
|
|
26
|
+
* FAILED the SOS could not be raised because clarion-incident refused
|
|
27
|
+
* it outright (a non-retryable error). Terminal; the user is
|
|
28
|
+
* told to call for help and operators are alerted.
|
|
29
|
+
*/
|
|
30
|
+
export var SafetyCheckStatus;
|
|
31
|
+
(function (SafetyCheckStatus) {
|
|
32
|
+
SafetyCheckStatus["CREATED"] = "CREATED";
|
|
33
|
+
SafetyCheckStatus["ACTIVE"] = "ACTIVE";
|
|
34
|
+
SafetyCheckStatus["PROMPTING"] = "PROMPTING";
|
|
35
|
+
SafetyCheckStatus["CHECKED_IN"] = "CHECKED_IN";
|
|
36
|
+
SafetyCheckStatus["SOS_TRIGGERED"] = "SOS_TRIGGERED";
|
|
37
|
+
SafetyCheckStatus["STOPPED"] = "STOPPED";
|
|
38
|
+
SafetyCheckStatus["EXPIRED"] = "EXPIRED";
|
|
39
|
+
SafetyCheckStatus["CANCELLED"] = "CANCELLED";
|
|
40
|
+
SafetyCheckStatus["FAILED"] = "FAILED";
|
|
41
|
+
})(SafetyCheckStatus || (SafetyCheckStatus = {}));
|
|
42
|
+
//# 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,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"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/** Why a Safety Check raised an SOS. */
|
|
2
|
+
export var SafetyCheckSosTrigger;
|
|
3
|
+
(function (SafetyCheckSosTrigger) {
|
|
4
|
+
/** The prompt countdown ran out without the user confirming they were safe. */
|
|
5
|
+
SafetyCheckSosTrigger["MISSED_CHECK_IN"] = "MISSED_CHECK_IN";
|
|
6
|
+
/** The user pressed SOS from the Safety Check screen. */
|
|
7
|
+
SafetyCheckSosTrigger["USER_REQUESTED"] = "USER_REQUESTED";
|
|
8
|
+
})(SafetyCheckSosTrigger || (SafetyCheckSosTrigger = {}));
|
|
9
|
+
/** Who caused a Safety Check transition - recorded on every audit entry. */
|
|
10
|
+
export var SafetyCheckActorType;
|
|
11
|
+
(function (SafetyCheckActorType) {
|
|
12
|
+
SafetyCheckActorType["USER"] = "USER";
|
|
13
|
+
/** The durable timer in clarion-workflow-manager. */
|
|
14
|
+
SafetyCheckActorType["WORKFLOW"] = "WORKFLOW";
|
|
15
|
+
/** clarion-safety's backstop sweeper, acting on an overdue check. */
|
|
16
|
+
SafetyCheckActorType["RECONCILER"] = "RECONCILER";
|
|
17
|
+
SafetyCheckActorType["SYSTEM"] = "SYSTEM";
|
|
18
|
+
})(SafetyCheckActorType || (SafetyCheckActorType = {}));
|
|
19
|
+
/** Audit trail entries (safety_check_events.eventType). Never carries a location. */
|
|
20
|
+
export var SafetyCheckAuditEventType;
|
|
21
|
+
(function (SafetyCheckAuditEventType) {
|
|
22
|
+
SafetyCheckAuditEventType["CREATED"] = "CREATED";
|
|
23
|
+
SafetyCheckAuditEventType["ACTIVATED"] = "ACTIVATED";
|
|
24
|
+
SafetyCheckAuditEventType["TRACKING_STARTED"] = "TRACKING_STARTED";
|
|
25
|
+
SafetyCheckAuditEventType["TRACKING_UNAVAILABLE"] = "TRACKING_UNAVAILABLE";
|
|
26
|
+
SafetyCheckAuditEventType["WORKFLOW_STARTED"] = "WORKFLOW_STARTED";
|
|
27
|
+
SafetyCheckAuditEventType["WORKFLOW_START_FAILED"] = "WORKFLOW_START_FAILED";
|
|
28
|
+
SafetyCheckAuditEventType["EXTENDED"] = "EXTENDED";
|
|
29
|
+
SafetyCheckAuditEventType["PROMPT_STARTED"] = "PROMPT_STARTED";
|
|
30
|
+
SafetyCheckAuditEventType["CHECKED_IN"] = "CHECKED_IN";
|
|
31
|
+
SafetyCheckAuditEventType["STOPPED"] = "STOPPED";
|
|
32
|
+
SafetyCheckAuditEventType["CANCELLED"] = "CANCELLED";
|
|
33
|
+
SafetyCheckAuditEventType["SOS_TRIGGERED"] = "SOS_TRIGGERED";
|
|
34
|
+
SafetyCheckAuditEventType["SOS_INCIDENT_CREATED"] = "SOS_INCIDENT_CREATED";
|
|
35
|
+
SafetyCheckAuditEventType["SOS_INCIDENT_RETRY"] = "SOS_INCIDENT_RETRY";
|
|
36
|
+
SafetyCheckAuditEventType["SOS_FAILED"] = "SOS_FAILED";
|
|
37
|
+
SafetyCheckAuditEventType["EXPIRED"] = "EXPIRED";
|
|
38
|
+
})(SafetyCheckAuditEventType || (SafetyCheckAuditEventType = {}));
|
|
39
|
+
/**
|
|
40
|
+
* The safety features that can raise an incident. Phase 1 raises only
|
|
41
|
+
* SAFETY_CHECK; FOLLOW_ME exists because its incident type is provisioned for
|
|
42
|
+
* every organization from day one.
|
|
43
|
+
*/
|
|
44
|
+
export var SafetyFeature;
|
|
45
|
+
(function (SafetyFeature) {
|
|
46
|
+
SafetyFeature["SAFETY_CHECK"] = "SAFETY_CHECK";
|
|
47
|
+
SafetyFeature["FOLLOW_ME"] = "FOLLOW_ME";
|
|
48
|
+
})(SafetyFeature || (SafetyFeature = {}));
|
|
49
|
+
/** Stable code of the incident category every organization receives. */
|
|
50
|
+
export var SafetyIncidentCategoryCode;
|
|
51
|
+
(function (SafetyIncidentCategoryCode) {
|
|
52
|
+
SafetyIncidentCategoryCode["SAFETY_ALERTS"] = "SAFETY_ALERTS";
|
|
53
|
+
})(SafetyIncidentCategoryCode || (SafetyIncidentCategoryCode = {}));
|
|
54
|
+
/** Stable codes of the incident types inside the Safety Alerts category. */
|
|
55
|
+
export var SafetyIncidentTypeCode;
|
|
56
|
+
(function (SafetyIncidentTypeCode) {
|
|
57
|
+
SafetyIncidentTypeCode["SAFETY_CHECK_SOS"] = "SAFETY_CHECK_SOS";
|
|
58
|
+
SafetyIncidentTypeCode["FOLLOW_ME_SOS"] = "FOLLOW_ME_SOS";
|
|
59
|
+
})(SafetyIncidentTypeCode || (SafetyIncidentTypeCode = {}));
|
|
60
|
+
/**
|
|
61
|
+
* Kafka event types published by clarion-safety (the `eventType` field of
|
|
62
|
+
* SafetyCheckEvent). One topic per type, see KAFKA_TOPICS.SAFETY_CHECK_*.
|
|
63
|
+
*/
|
|
64
|
+
export var SafetyCheckEventType;
|
|
65
|
+
(function (SafetyCheckEventType) {
|
|
66
|
+
SafetyCheckEventType["STARTED"] = "SAFETY_CHECK_STARTED";
|
|
67
|
+
SafetyCheckEventType["PROMPTING"] = "SAFETY_CHECK_PROMPTING";
|
|
68
|
+
SafetyCheckEventType["ENDED"] = "SAFETY_CHECK_ENDED";
|
|
69
|
+
SafetyCheckEventType["SOS_TRIGGERED"] = "SAFETY_CHECK_SOS_TRIGGERED";
|
|
70
|
+
})(SafetyCheckEventType || (SafetyCheckEventType = {}));
|
|
71
|
+
/**
|
|
72
|
+
* Push `data.action` / `data.type` values the mobile app routes on. Sent by
|
|
73
|
+
* clarion-notification; the app allow-lists them in
|
|
74
|
+
* notification_deep_link_coordinator.dart. Changing a value is a breaking
|
|
75
|
+
* change to installed apps.
|
|
76
|
+
*/
|
|
77
|
+
export var SafetyPushAction;
|
|
78
|
+
(function (SafetyPushAction) {
|
|
79
|
+
/** To the user: it is time to confirm you are safe. */
|
|
80
|
+
SafetyPushAction["SAFETY_CHECK_PROMPT"] = "SAFETY_CHECK_PROMPT";
|
|
81
|
+
/** To the user: an SOS was raised for your Safety Check. */
|
|
82
|
+
SafetyPushAction["SAFETY_CHECK_SOS_TRIGGERED"] = "SAFETY_CHECK_SOS_TRIGGERED";
|
|
83
|
+
/** To the user: the Safety Check ended without them (FAILED/EXPIRED/CANCELLED). */
|
|
84
|
+
SafetyPushAction["SAFETY_CHECK_ENDED"] = "SAFETY_CHECK_ENDED";
|
|
85
|
+
/** To a guardian: somebody who chose you started a Safety Check. */
|
|
86
|
+
SafetyPushAction["SAFETY_CHECK_GUARDIAN_STARTED"] = "SAFETY_CHECK_GUARDIAN_STARTED";
|
|
87
|
+
/** To a guardian: that Safety Check ended safely. */
|
|
88
|
+
SafetyPushAction["SAFETY_CHECK_GUARDIAN_ENDED"] = "SAFETY_CHECK_GUARDIAN_ENDED";
|
|
89
|
+
})(SafetyPushAction || (SafetyPushAction = {}));
|
|
90
|
+
//# 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,MAAM,CAAN,IAAY,qBAKX;AALD,WAAY,qBAAqB;IAC7B,+EAA+E;IAC/E,4DAAmC,CAAA;IACnC,yDAAyD;IACzD,0DAAiC,CAAA;AACrC,CAAC,EALW,qBAAqB,KAArB,qBAAqB,QAKhC;AAED,4EAA4E;AAC5E,MAAM,CAAN,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,KAApB,oBAAoB,QAO/B;AAED,qFAAqF;AACrF,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;;;;GAIG;AACH,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;;;GAGG;AACH,MAAM,CAAN,IAAY,oBAKX;AALD,WAAY,oBAAoB;IAC5B,wDAAgC,CAAA;IAChC,4DAAoC,CAAA;IACpC,oDAA4B,CAAA;IAC5B,oEAA4C,CAAA;AAChD,CAAC,EALW,oBAAoB,KAApB,oBAAoB,QAK/B;AAED;;;;;GAKG;AACH,MAAM,CAAN,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,KAAhB,gBAAgB,QAW3B"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Machine-readable `code` on every error clarion-safety returns, so the app can
|
|
3
|
+
* react (e.g. adopt the check a duplicate start collided with) without parsing
|
|
4
|
+
* the human message.
|
|
5
|
+
*/
|
|
6
|
+
export var SafetyCheckErrorCode;
|
|
7
|
+
(function (SafetyCheckErrorCode) {
|
|
8
|
+
SafetyCheckErrorCode["NOT_FOUND"] = "SAFETY_CHECK_NOT_FOUND";
|
|
9
|
+
SafetyCheckErrorCode["ALREADY_ACTIVE"] = "SAFETY_CHECK_ALREADY_ACTIVE";
|
|
10
|
+
SafetyCheckErrorCode["ALREADY_ENDED"] = "SAFETY_CHECK_ENDED";
|
|
11
|
+
SafetyCheckErrorCode["SOS_ALREADY_TRIGGERED"] = "SAFETY_CHECK_SOS_ALREADY_TRIGGERED";
|
|
12
|
+
SafetyCheckErrorCode["INVALID_TRANSITION"] = "SAFETY_CHECK_INVALID_TRANSITION";
|
|
13
|
+
SafetyCheckErrorCode["INVALID_DURATION"] = "SAFETY_CHECK_INVALID_DURATION";
|
|
14
|
+
SafetyCheckErrorCode["MAX_DURATION_EXCEEDED"] = "SAFETY_CHECK_MAX_DURATION_EXCEEDED";
|
|
15
|
+
SafetyCheckErrorCode["INVALID_REASON"] = "SAFETY_CHECK_INVALID_REASON";
|
|
16
|
+
SafetyCheckErrorCode["CUSTOM_REASON_REQUIRED"] = "SAFETY_CHECK_CUSTOM_REASON_REQUIRED";
|
|
17
|
+
SafetyCheckErrorCode["GUARDIAN_NOT_FOUND"] = "SAFETY_CHECK_GUARDIAN_NOT_FOUND";
|
|
18
|
+
SafetyCheckErrorCode["GUARDIANS_UNAVAILABLE"] = "SAFETY_CHECK_GUARDIANS_UNAVAILABLE";
|
|
19
|
+
SafetyCheckErrorCode["NO_SOS_RECIPIENTS"] = "SAFETY_CHECK_NO_SOS_RECIPIENTS";
|
|
20
|
+
SafetyCheckErrorCode["SERVICE_PROVIDER_NOT_ENTITLED"] = "SAFETY_CHECK_SERVICE_PROVIDER_NOT_ENTITLED";
|
|
21
|
+
SafetyCheckErrorCode["TRACKING_CLOSED"] = "SAFETY_CHECK_TRACKING_CLOSED";
|
|
22
|
+
SafetyCheckErrorCode["RATE_LIMITED"] = "SAFETY_CHECK_RATE_LIMITED";
|
|
23
|
+
})(SafetyCheckErrorCode || (SafetyCheckErrorCode = {}));
|
|
24
|
+
//# 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,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,19 @@
|
|
|
1
|
+
// Enums
|
|
2
|
+
export * from './enums/safety-check-status.enum';
|
|
3
|
+
export * from './enums/safety-enums';
|
|
4
|
+
export * from './enums/safety-error-code.enum';
|
|
5
|
+
// Constants
|
|
6
|
+
export * from './constants/safety-check-limits.const';
|
|
7
|
+
export * from './constants/safety-taxonomy.const';
|
|
8
|
+
export * from './constants/safety-integration.const';
|
|
9
|
+
// Interfaces
|
|
10
|
+
export * from './interfaces/safety-check';
|
|
11
|
+
export * from './interfaces/safety-check-event';
|
|
12
|
+
// DTOs
|
|
13
|
+
export * from './dtos/safety-check.dto';
|
|
14
|
+
export * from './dtos/safety-admin.dto';
|
|
15
|
+
export * from './dtos/safety-internal.dto';
|
|
16
|
+
// Utilities
|
|
17
|
+
export * from './utils/safety-check-state-machine';
|
|
18
|
+
export * from './utils/safety-check-timing.util';
|
|
19
|
+
//# 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,kCAAkC,CAAC;AACjD,cAAc,sBAAsB,CAAC;AACrC,cAAc,gCAAgC,CAAC;AAE/C,YAAY;AACZ,cAAc,uCAAuC,CAAC;AACtD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sCAAsC,CAAC;AAErD,aAAa;AACb,cAAc,2BAA2B,CAAC;AAC1C,cAAc,iCAAiC,CAAC;AAEhD,OAAO;AACP,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAE3C,YAAY;AACZ,cAAc,oCAAoC,CAAC;AACnD,cAAc,kCAAkC,CAAC"}
|
|
@@ -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,67 @@
|
|
|
1
|
+
import { SafetyCheckStatus } from '../enums/safety-check-status.enum';
|
|
2
|
+
const S = SafetyCheckStatus;
|
|
3
|
+
/**
|
|
4
|
+
* Every legal Safety Check transition. clarion-safety refuses anything else, and
|
|
5
|
+
* applies each allowed one as `UPDATE ... WHERE status IN (<allowed sources>)`, so
|
|
6
|
+
* the database - not the caller - decides a race.
|
|
7
|
+
*
|
|
8
|
+
* Re-applying a transition to a check already in the target state is NOT listed
|
|
9
|
+
* here: it is an idempotent no-op, answered with the current check
|
|
10
|
+
* (see isIdempotentRepeat).
|
|
11
|
+
*/
|
|
12
|
+
export const SAFETY_CHECK_TRANSITIONS = {
|
|
13
|
+
[S.CREATED]: [S.ACTIVE, S.PROMPTING, S.CHECKED_IN, S.SOS_TRIGGERED, S.STOPPED, S.CANCELLED, S.EXPIRED],
|
|
14
|
+
[S.ACTIVE]: [S.PROMPTING, S.CHECKED_IN, S.SOS_TRIGGERED, S.STOPPED, S.CANCELLED, S.EXPIRED],
|
|
15
|
+
// Back to ACTIVE when the user extends while being prompted.
|
|
16
|
+
[S.PROMPTING]: [S.ACTIVE, S.CHECKED_IN, S.SOS_TRIGGERED, S.STOPPED, S.CANCELLED, S.EXPIRED],
|
|
17
|
+
// The check is over once an SOS is raised; FAILED only when the incident
|
|
18
|
+
// could never be created.
|
|
19
|
+
[S.SOS_TRIGGERED]: [S.FAILED],
|
|
20
|
+
[S.CHECKED_IN]: [],
|
|
21
|
+
[S.STOPPED]: [],
|
|
22
|
+
[S.EXPIRED]: [],
|
|
23
|
+
[S.CANCELLED]: [],
|
|
24
|
+
[S.FAILED]: [],
|
|
25
|
+
};
|
|
26
|
+
/** States in which the user is "in a Safety Check": at most one per user. */
|
|
27
|
+
export const OPEN_SAFETY_CHECK_STATUSES = [S.CREATED, S.ACTIVE, S.PROMPTING];
|
|
28
|
+
/** States from which the check will never move again. */
|
|
29
|
+
export const TERMINAL_SAFETY_CHECK_STATUSES = [
|
|
30
|
+
S.CHECKED_IN,
|
|
31
|
+
S.STOPPED,
|
|
32
|
+
S.EXPIRED,
|
|
33
|
+
S.CANCELLED,
|
|
34
|
+
S.FAILED,
|
|
35
|
+
];
|
|
36
|
+
/**
|
|
37
|
+
* States in which location is still being recorded for the check. SOS_TRIGGERED
|
|
38
|
+
* is included: the recorded trip becomes the incident's trip and keeps growing.
|
|
39
|
+
*/
|
|
40
|
+
export const TRACKING_SAFETY_CHECK_STATUSES = [
|
|
41
|
+
S.CREATED,
|
|
42
|
+
S.ACTIVE,
|
|
43
|
+
S.PROMPTING,
|
|
44
|
+
S.SOS_TRIGGERED,
|
|
45
|
+
];
|
|
46
|
+
export function isOpenSafetyCheckStatus(status) {
|
|
47
|
+
return !!status && OPEN_SAFETY_CHECK_STATUSES.includes(status);
|
|
48
|
+
}
|
|
49
|
+
export function isTerminalSafetyCheckStatus(status) {
|
|
50
|
+
return !!status && TERMINAL_SAFETY_CHECK_STATUSES.includes(status);
|
|
51
|
+
}
|
|
52
|
+
export function canTransitionSafetyCheck(from, to) {
|
|
53
|
+
var _a;
|
|
54
|
+
return ((_a = SAFETY_CHECK_TRANSITIONS[from]) !== null && _a !== void 0 ? _a : []).includes(to);
|
|
55
|
+
}
|
|
56
|
+
/** The states a check may be in for a transition to `to` to be applied. */
|
|
57
|
+
export function allowedSourcesFor(to) {
|
|
58
|
+
return Object.keys(SAFETY_CHECK_TRANSITIONS).filter((from) => SAFETY_CHECK_TRANSITIONS[from].includes(to));
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* A repeated request for the state the check is already in - a retried "I'm OK",
|
|
62
|
+
* a second stop. Answered with the current check, never an error.
|
|
63
|
+
*/
|
|
64
|
+
export function isIdempotentRepeat(current, requested) {
|
|
65
|
+
return current === requested;
|
|
66
|
+
}
|
|
67
|
+
//# 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":"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"}
|