grm-shared-library 1.1.222 → 1.1.224

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 (151) hide show
  1. package/dist/cjs/kafka/topics.js +7 -0
  2. package/dist/cjs/kafka/topics.js.map +1 -1
  3. package/dist/cjs/modules/gis/dtos/private-trip.dto.js +34 -0
  4. package/dist/cjs/modules/gis/dtos/private-trip.dto.js.map +1 -1
  5. package/dist/cjs/modules/gis/dtos/routing.dto.js +251 -0
  6. package/dist/cjs/modules/gis/dtos/routing.dto.js.map +1 -0
  7. package/dist/cjs/modules/gis/dtos/trip-points.dto.js +35 -0
  8. package/dist/cjs/modules/gis/dtos/trip-points.dto.js.map +1 -0
  9. package/dist/cjs/modules/gis/enums/routing.enum.js +29 -0
  10. package/dist/cjs/modules/gis/enums/routing.enum.js.map +1 -0
  11. package/dist/cjs/modules/gis/enums/trip-privacy.enum.js +6 -0
  12. package/dist/cjs/modules/gis/enums/trip-privacy.enum.js.map +1 -1
  13. package/dist/cjs/modules/gis/index.js +5 -0
  14. package/dist/cjs/modules/gis/index.js.map +1 -1
  15. package/dist/cjs/modules/gis/interfaces/routing.js +3 -0
  16. package/dist/cjs/modules/gis/interfaces/routing.js.map +1 -0
  17. package/dist/cjs/modules/gis/interfaces/trip-point.js +3 -0
  18. package/dist/cjs/modules/gis/interfaces/trip-point.js.map +1 -0
  19. package/dist/cjs/modules/incident/dtos/incident/incident.dto.js +9 -1
  20. package/dist/cjs/modules/incident/dtos/incident/incident.dto.js.map +1 -1
  21. package/dist/cjs/modules/incident/enums/incident-origin-type.enum.js +2 -0
  22. package/dist/cjs/modules/incident/enums/incident-origin-type.enum.js.map +1 -1
  23. package/dist/cjs/modules/permission/data/permissions.data.js +10 -1
  24. package/dist/cjs/modules/permission/data/permissions.data.js.map +1 -1
  25. package/dist/cjs/modules/permission/enums/permission-actions.enum.js +12 -0
  26. package/dist/cjs/modules/permission/enums/permission-actions.enum.js.map +1 -1
  27. package/dist/cjs/modules/permission/enums/permissions-module.enum.js +1 -0
  28. package/dist/cjs/modules/permission/enums/permissions-module.enum.js.map +1 -1
  29. package/dist/cjs/modules/role/constants/safety-roles.js +22 -1
  30. package/dist/cjs/modules/role/constants/safety-roles.js.map +1 -1
  31. package/dist/cjs/modules/role/data/roles.data.js +24 -7
  32. package/dist/cjs/modules/role/data/roles.data.js.map +1 -1
  33. package/dist/cjs/modules/safety/constants/follow-me.const.js +137 -0
  34. package/dist/cjs/modules/safety/constants/follow-me.const.js.map +1 -0
  35. package/dist/cjs/modules/safety/constants/safety-integration.const.js +88 -1
  36. package/dist/cjs/modules/safety/constants/safety-integration.const.js.map +1 -1
  37. package/dist/cjs/modules/safety/dtos/follow-me.dto.js +501 -0
  38. package/dist/cjs/modules/safety/dtos/follow-me.dto.js.map +1 -0
  39. package/dist/cjs/modules/safety/dtos/safety-admin.dto.js +13 -0
  40. package/dist/cjs/modules/safety/dtos/safety-admin.dto.js.map +1 -1
  41. package/dist/cjs/modules/safety/dtos/safety-alert-context.dto.js +60 -0
  42. package/dist/cjs/modules/safety/dtos/safety-alert-context.dto.js.map +1 -0
  43. package/dist/cjs/modules/safety/dtos/safety-internal.dto.js +17 -0
  44. package/dist/cjs/modules/safety/dtos/safety-internal.dto.js.map +1 -1
  45. package/dist/cjs/modules/safety/enums/follow-me.enums.js +237 -0
  46. package/dist/cjs/modules/safety/enums/follow-me.enums.js.map +1 -0
  47. package/dist/cjs/modules/safety/enums/safety-enums.js +8 -3
  48. package/dist/cjs/modules/safety/enums/safety-enums.js.map +1 -1
  49. package/dist/cjs/modules/safety/index.js +7 -0
  50. package/dist/cjs/modules/safety/index.js.map +1 -1
  51. package/dist/cjs/modules/safety/interfaces/follow-me.js +3 -0
  52. package/dist/cjs/modules/safety/interfaces/follow-me.js.map +1 -0
  53. package/dist/cjs/modules/safety/interfaces/safety-alert-context.js +3 -0
  54. package/dist/cjs/modules/safety/interfaces/safety-alert-context.js.map +1 -0
  55. package/dist/cjs/modules/safety/utils/follow-me-state-machine.js +131 -0
  56. package/dist/cjs/modules/safety/utils/follow-me-state-machine.js.map +1 -0
  57. package/dist/cjs/modules/sms/constants/sms-templates.config.js +12 -0
  58. package/dist/cjs/modules/sms/constants/sms-templates.config.js.map +1 -1
  59. package/dist/cjs/modules/sms/enums/sms-template.enum.js +2 -0
  60. package/dist/cjs/modules/sms/enums/sms-template.enum.js.map +1 -1
  61. package/dist/esm/kafka/topics.js +7 -0
  62. package/dist/esm/kafka/topics.js.map +1 -1
  63. package/dist/esm/modules/gis/dtos/private-trip.dto.js +34 -0
  64. package/dist/esm/modules/gis/dtos/private-trip.dto.js.map +1 -1
  65. package/dist/esm/modules/gis/dtos/routing.dto.js +241 -0
  66. package/dist/esm/modules/gis/dtos/routing.dto.js.map +1 -0
  67. package/dist/esm/modules/gis/dtos/trip-points.dto.js +31 -0
  68. package/dist/esm/modules/gis/dtos/trip-points.dto.js.map +1 -0
  69. package/dist/esm/modules/gis/enums/routing.enum.js +26 -0
  70. package/dist/esm/modules/gis/enums/routing.enum.js.map +1 -0
  71. package/dist/esm/modules/gis/enums/trip-privacy.enum.js +6 -0
  72. package/dist/esm/modules/gis/enums/trip-privacy.enum.js.map +1 -1
  73. package/dist/esm/modules/gis/index.js +5 -0
  74. package/dist/esm/modules/gis/index.js.map +1 -1
  75. package/dist/esm/modules/gis/interfaces/routing.js +2 -0
  76. package/dist/esm/modules/gis/interfaces/routing.js.map +1 -0
  77. package/dist/esm/modules/gis/interfaces/trip-point.js +2 -0
  78. package/dist/esm/modules/gis/interfaces/trip-point.js.map +1 -0
  79. package/dist/esm/modules/incident/dtos/incident/incident.dto.js +9 -1
  80. package/dist/esm/modules/incident/dtos/incident/incident.dto.js.map +1 -1
  81. package/dist/esm/modules/incident/enums/incident-origin-type.enum.js +2 -0
  82. package/dist/esm/modules/incident/enums/incident-origin-type.enum.js.map +1 -1
  83. package/dist/esm/modules/permission/data/permissions.data.js +10 -1
  84. package/dist/esm/modules/permission/data/permissions.data.js.map +1 -1
  85. package/dist/esm/modules/permission/enums/permission-actions.enum.js +12 -0
  86. package/dist/esm/modules/permission/enums/permission-actions.enum.js.map +1 -1
  87. package/dist/esm/modules/permission/enums/permissions-module.enum.js +1 -0
  88. package/dist/esm/modules/permission/enums/permissions-module.enum.js.map +1 -1
  89. package/dist/esm/modules/role/constants/safety-roles.js +21 -0
  90. package/dist/esm/modules/role/constants/safety-roles.js.map +1 -1
  91. package/dist/esm/modules/role/data/roles.data.js +24 -7
  92. package/dist/esm/modules/role/data/roles.data.js.map +1 -1
  93. package/dist/esm/modules/safety/constants/follow-me.const.js +134 -0
  94. package/dist/esm/modules/safety/constants/follow-me.const.js.map +1 -0
  95. package/dist/esm/modules/safety/constants/safety-integration.const.js +86 -0
  96. package/dist/esm/modules/safety/constants/safety-integration.const.js.map +1 -1
  97. package/dist/esm/modules/safety/dtos/follow-me.dto.js +488 -0
  98. package/dist/esm/modules/safety/dtos/follow-me.dto.js.map +1 -0
  99. package/dist/esm/modules/safety/dtos/safety-admin.dto.js +13 -0
  100. package/dist/esm/modules/safety/dtos/safety-admin.dto.js.map +1 -1
  101. package/dist/esm/modules/safety/dtos/safety-alert-context.dto.js +55 -0
  102. package/dist/esm/modules/safety/dtos/safety-alert-context.dto.js.map +1 -0
  103. package/dist/esm/modules/safety/dtos/safety-internal.dto.js +17 -0
  104. package/dist/esm/modules/safety/dtos/safety-internal.dto.js.map +1 -1
  105. package/dist/esm/modules/safety/enums/follow-me.enums.js +234 -0
  106. package/dist/esm/modules/safety/enums/follow-me.enums.js.map +1 -0
  107. package/dist/esm/modules/safety/enums/safety-enums.js +8 -3
  108. package/dist/esm/modules/safety/enums/safety-enums.js.map +1 -1
  109. package/dist/esm/modules/safety/index.js +7 -0
  110. package/dist/esm/modules/safety/index.js.map +1 -1
  111. package/dist/esm/modules/safety/interfaces/follow-me.js +2 -0
  112. package/dist/esm/modules/safety/interfaces/follow-me.js.map +1 -0
  113. package/dist/esm/modules/safety/interfaces/safety-alert-context.js +2 -0
  114. package/dist/esm/modules/safety/interfaces/safety-alert-context.js.map +1 -0
  115. package/dist/esm/modules/safety/utils/follow-me-state-machine.js +116 -0
  116. package/dist/esm/modules/safety/utils/follow-me-state-machine.js.map +1 -0
  117. package/dist/esm/modules/sms/constants/sms-templates.config.js +12 -0
  118. package/dist/esm/modules/sms/constants/sms-templates.config.js.map +1 -1
  119. package/dist/esm/modules/sms/enums/sms-template.enum.js +2 -0
  120. package/dist/esm/modules/sms/enums/sms-template.enum.js.map +1 -1
  121. package/dist/types/kafka/topics.d.ts +5 -0
  122. package/dist/types/modules/gis/dtos/private-trip.dto.d.ts +4 -0
  123. package/dist/types/modules/gis/dtos/routing.dto.d.ts +48 -0
  124. package/dist/types/modules/gis/dtos/trip-points.dto.d.ts +5 -0
  125. package/dist/types/modules/gis/enums/routing.enum.d.ts +22 -0
  126. package/dist/types/modules/gis/enums/trip-privacy.enum.d.ts +7 -1
  127. package/dist/types/modules/gis/index.d.ts +5 -0
  128. package/dist/types/modules/gis/interfaces/routing.d.ts +43 -0
  129. package/dist/types/modules/gis/interfaces/trip-point.d.ts +16 -0
  130. package/dist/types/modules/gis/interfaces/trip-summary.d.ts +2 -6
  131. package/dist/types/modules/incident/dtos/incident/incident.dto.d.ts +2 -0
  132. package/dist/types/modules/incident/enums/incident-origin-type.enum.d.ts +3 -1
  133. package/dist/types/modules/incident/intefaces/incident.d.ts +3 -0
  134. package/dist/types/modules/permission/enums/permission-actions.enum.d.ts +4 -0
  135. package/dist/types/modules/permission/enums/permissions-module.enum.d.ts +2 -1
  136. package/dist/types/modules/role/constants/safety-roles.d.ts +10 -0
  137. package/dist/types/modules/safety/constants/follow-me.const.d.ts +120 -0
  138. package/dist/types/modules/safety/constants/safety-integration.const.d.ts +79 -0
  139. package/dist/types/modules/safety/dtos/follow-me.dto.d.ts +106 -0
  140. package/dist/types/modules/safety/dtos/safety-admin.dto.d.ts +3 -0
  141. package/dist/types/modules/safety/dtos/safety-alert-context.dto.d.ts +14 -0
  142. package/dist/types/modules/safety/dtos/safety-internal.dto.d.ts +3 -0
  143. package/dist/types/modules/safety/enums/follow-me.enums.d.ts +218 -0
  144. package/dist/types/modules/safety/enums/safety-enums.d.ts +9 -4
  145. package/dist/types/modules/safety/index.d.ts +7 -0
  146. package/dist/types/modules/safety/interfaces/follow-me.d.ts +377 -0
  147. package/dist/types/modules/safety/interfaces/safety-alert-context.d.ts +8 -0
  148. package/dist/types/modules/safety/interfaces/safety-check.d.ts +3 -1
  149. package/dist/types/modules/safety/utils/follow-me-state-machine.d.ts +51 -0
  150. package/dist/types/modules/sms/enums/sms-template.enum.d.ts +2 -0
  151. package/package.json +1 -1
@@ -0,0 +1,488 @@
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, IsEnum, IsIn, IsInt, IsNotEmptyObject, IsNumber, IsOptional, IsPositive, IsString, IsUUID, Matches, Max, MaxLength, Min, MinLength, ValidateNested, } from 'class-validator';
13
+ import { GuardianAudienceDto } from '../../alert-dispatch/dtos/guardian-audience.dto';
14
+ import { FOLLOW_ME_CRASH_DETECTION, FOLLOW_ME_LIMITS } from '../constants/follow-me.const';
15
+ import { FollowMeStatus, FollowMeTransportMode, FollowMeWaypointKind } from '../enums/follow-me.enums';
16
+ import { SafetyCheckLocationDto } from './safety-check.dto';
17
+ const trim = ({ value }) => (typeof value === 'string' ? value.trim() : value);
18
+ const toOptionalBoolean = ({ value }) => {
19
+ if (value === undefined || value === null || value === '')
20
+ return undefined;
21
+ if (typeof value === 'boolean')
22
+ return value;
23
+ const normalized = String(value).toLowerCase();
24
+ if (normalized === 'true')
25
+ return true;
26
+ if (normalized === 'false')
27
+ return false;
28
+ return undefined;
29
+ };
30
+ /** One point of a planned journey: where it starts, a stop, or where it ends. */
31
+ export class FollowMeWaypointDto {
32
+ }
33
+ __decorate([
34
+ ApiProperty({ enum: FollowMeWaypointKind }),
35
+ IsEnum(FollowMeWaypointKind),
36
+ __metadata("design:type", String)
37
+ ], FollowMeWaypointDto.prototype, "kind", void 0);
38
+ __decorate([
39
+ ApiProperty(),
40
+ Type(() => Number),
41
+ IsNumber(),
42
+ Min(-90),
43
+ Max(90),
44
+ __metadata("design:type", Number)
45
+ ], FollowMeWaypointDto.prototype, "lat", void 0);
46
+ __decorate([
47
+ ApiProperty(),
48
+ Type(() => Number),
49
+ IsNumber(),
50
+ Min(-180),
51
+ Max(180),
52
+ __metadata("design:type", Number)
53
+ ], FollowMeWaypointDto.prototype, "lng", void 0);
54
+ __decorate([
55
+ ApiProperty({ maxLength: 120, example: 'Home' }),
56
+ Transform(trim),
57
+ IsString(),
58
+ MinLength(1),
59
+ MaxLength(120),
60
+ __metadata("design:type", String)
61
+ ], FollowMeWaypointDto.prototype, "label", void 0);
62
+ __decorate([
63
+ ApiPropertyOptional({ maxLength: 255 }),
64
+ Transform(trim),
65
+ IsString(),
66
+ MaxLength(255),
67
+ IsOptional(),
68
+ __metadata("design:type", String)
69
+ ], FollowMeWaypointDto.prototype, "address", void 0);
70
+ __decorate([
71
+ ApiPropertyOptional({ maxLength: 255, description: 'Maps provider place id, when chosen from search' }),
72
+ IsString(),
73
+ MaxLength(255),
74
+ IsOptional(),
75
+ __metadata("design:type", String)
76
+ ], FollowMeWaypointDto.prototype, "placeId", void 0);
77
+ __decorate([
78
+ ApiPropertyOptional({ format: 'uuid', description: 'The saved place it came from, if any' }),
79
+ IsUUID(),
80
+ IsOptional(),
81
+ __metadata("design:type", String)
82
+ ], FollowMeWaypointDto.prototype, "savedPlaceId", void 0);
83
+ /**
84
+ * Plan a route (POST /safety/follow-me/routes/preview). Exactly one START (the
85
+ * app defaults it to the current location), 0..5 STOPs in order, exactly one
86
+ * DESTINATION. clarion-safety validates the shape; clarion-gis computes it.
87
+ */
88
+ export class PreviewFollowMeRouteDto {
89
+ }
90
+ __decorate([
91
+ ApiProperty({ enum: FollowMeTransportMode }),
92
+ IsEnum(FollowMeTransportMode),
93
+ __metadata("design:type", String)
94
+ ], PreviewFollowMeRouteDto.prototype, "transportMode", void 0);
95
+ __decorate([
96
+ ApiProperty({ type: [FollowMeWaypointDto] }),
97
+ IsArray(),
98
+ ArrayMinSize(2),
99
+ ArrayMaxSize(FOLLOW_ME_LIMITS.maxIntermediateStops + 2),
100
+ ValidateNested({ each: true }),
101
+ Type(() => FollowMeWaypointDto),
102
+ __metadata("design:type", Array)
103
+ ], PreviewFollowMeRouteDto.prototype, "waypoints", void 0);
104
+ /**
105
+ * The planned route a session starts with. The geometry is never taken from the
106
+ * client: `routeToken` names a preview clarion-safety computed and stored for
107
+ * this user, and the waypoints must match it.
108
+ */
109
+ export class FollowMeRoutePlanDto {
110
+ }
111
+ __decorate([
112
+ ApiProperty({ description: 'From POST /safety/follow-me/routes/preview' }),
113
+ IsString(),
114
+ Matches(/^[A-Za-z0-9_-]{16,128}$/),
115
+ __metadata("design:type", String)
116
+ ], FollowMeRoutePlanDto.prototype, "routeToken", void 0);
117
+ /**
118
+ * Starting Follow Me. Every field is re-checked server-side: the reason against
119
+ * the database, each guardian against clarion-authentication, provider
120
+ * participation against clarion-billing, the duration against the 24 h cap, and
121
+ * the route against the stored preview.
122
+ */
123
+ export class StartFollowMeDto {
124
+ }
125
+ __decorate([
126
+ ApiProperty({ format: 'uuid', description: 'A Follow Me reason from GET /safety/follow-me/reasons' }),
127
+ IsUUID(),
128
+ __metadata("design:type", String)
129
+ ], StartFollowMeDto.prototype, "reasonId", void 0);
130
+ __decorate([
131
+ ApiPropertyOptional({ maxLength: FOLLOW_ME_LIMITS.customReasonMaxLength }),
132
+ Transform(trim),
133
+ IsString(),
134
+ MaxLength(FOLLOW_ME_LIMITS.customReasonMaxLength),
135
+ IsOptional(),
136
+ __metadata("design:type", String)
137
+ ], StartFollowMeDto.prototype, "customReason", void 0);
138
+ __decorate([
139
+ ApiProperty({
140
+ minimum: FOLLOW_ME_LIMITS.minDurationMinutes,
141
+ maximum: FOLLOW_ME_LIMITS.maxDurationMinutes,
142
+ }),
143
+ Type(() => Number),
144
+ IsInt(),
145
+ Min(FOLLOW_ME_LIMITS.minDurationMinutes),
146
+ Max(FOLLOW_ME_LIMITS.maxDurationMinutes),
147
+ __metadata("design:type", Number)
148
+ ], StartFollowMeDto.prototype, "durationMinutes", void 0);
149
+ __decorate([
150
+ ApiPropertyOptional({
151
+ minimum: FOLLOW_ME_LIMITS.minPromptCountdownSeconds,
152
+ maximum: FOLLOW_ME_LIMITS.maxPromptCountdownSeconds,
153
+ default: FOLLOW_ME_LIMITS.defaultPromptCountdownSeconds,
154
+ }),
155
+ Type(() => Number),
156
+ IsInt(),
157
+ Min(FOLLOW_ME_LIMITS.minPromptCountdownSeconds),
158
+ Max(FOLLOW_ME_LIMITS.maxPromptCountdownSeconds),
159
+ IsOptional(),
160
+ __metadata("design:type", Number)
161
+ ], StartFollowMeDto.prototype, "promptCountdownSeconds", void 0);
162
+ __decorate([
163
+ ApiProperty({ type: GuardianAudienceDto, description: 'Snapshotted at start: these guardians, and only these, may follow' }),
164
+ IsNotEmptyObject(),
165
+ ValidateNested(),
166
+ Type(() => GuardianAudienceDto),
167
+ __metadata("design:type", GuardianAudienceDto)
168
+ ], StartFollowMeDto.prototype, "guardians", void 0);
169
+ __decorate([
170
+ ApiProperty({ description: 'Include the service provider (live view + SOS escalation). Refused without premium.' }),
171
+ IsBoolean(),
172
+ __metadata("design:type", Boolean)
173
+ ], StartFollowMeDto.prototype, "notifyServiceProvider", void 0);
174
+ __decorate([
175
+ ApiProperty({
176
+ description: 'Tell guardians when the journey ends. Follow requests are always sent - they are how a guardian starts following.',
177
+ }),
178
+ IsBoolean(),
179
+ __metadata("design:type", Boolean)
180
+ ], StartFollowMeDto.prototype, "notifyGuardiansOnStartEnd", void 0);
181
+ __decorate([
182
+ ApiPropertyOptional({ enum: FollowMeTransportMode, description: 'Taken from the route when one is planned' }),
183
+ IsEnum(FollowMeTransportMode),
184
+ IsOptional(),
185
+ __metadata("design:type", String)
186
+ ], StartFollowMeDto.prototype, "transportMode", void 0);
187
+ __decorate([
188
+ ApiPropertyOptional({ type: FollowMeRoutePlanDto }),
189
+ ValidateNested(),
190
+ Type(() => FollowMeRoutePlanDto),
191
+ IsOptional(),
192
+ __metadata("design:type", FollowMeRoutePlanDto)
193
+ ], StartFollowMeDto.prototype, "route", void 0);
194
+ __decorate([
195
+ ApiPropertyOptional({ type: SafetyCheckLocationDto, description: 'Where the user is as they start' }),
196
+ ValidateNested(),
197
+ Type(() => SafetyCheckLocationDto),
198
+ IsOptional(),
199
+ __metadata("design:type", SafetyCheckLocationDto)
200
+ ], StartFollowMeDto.prototype, "startLocation", void 0);
201
+ __decorate([
202
+ ApiPropertyOptional({ description: 'The device can track in the background (reported, recorded, never trusted for authorization)' }),
203
+ IsBoolean(),
204
+ IsOptional(),
205
+ __metadata("design:type", Boolean)
206
+ ], StartFollowMeDto.prototype, "backgroundLocationGranted", void 0);
207
+ __decorate([
208
+ ApiPropertyOptional({ description: 'The device can run crash detection (motion sensors available and allowed)' }),
209
+ IsBoolean(),
210
+ IsOptional(),
211
+ __metadata("design:type", Boolean)
212
+ ], StartFollowMeDto.prototype, "crashDetectionAvailable", void 0);
213
+ /** One recorded fix, with everything the device knows about it. */
214
+ export class FollowMeTrackPointDto {
215
+ }
216
+ __decorate([
217
+ ApiProperty(),
218
+ Type(() => Number),
219
+ IsNumber(),
220
+ Min(-90),
221
+ Max(90),
222
+ __metadata("design:type", Number)
223
+ ], FollowMeTrackPointDto.prototype, "lat", void 0);
224
+ __decorate([
225
+ ApiProperty(),
226
+ Type(() => Number),
227
+ IsNumber(),
228
+ Min(-180),
229
+ Max(180),
230
+ __metadata("design:type", Number)
231
+ ], FollowMeTrackPointDto.prototype, "lng", void 0);
232
+ __decorate([
233
+ ApiProperty({ description: 'When the device took the fix (ISO 8601)' }),
234
+ IsDateString(),
235
+ __metadata("design:type", String)
236
+ ], FollowMeTrackPointDto.prototype, "timestamp", void 0);
237
+ __decorate([
238
+ ApiPropertyOptional(),
239
+ Type(() => Number),
240
+ IsNumber(),
241
+ Min(0),
242
+ Max(100000),
243
+ IsOptional(),
244
+ __metadata("design:type", Number)
245
+ ], FollowMeTrackPointDto.prototype, "accuracy", void 0);
246
+ __decorate([
247
+ ApiPropertyOptional(),
248
+ Type(() => Number),
249
+ IsNumber(),
250
+ Min(-500),
251
+ Max(10000),
252
+ IsOptional(),
253
+ __metadata("design:type", Number)
254
+ ], FollowMeTrackPointDto.prototype, "altitude", void 0);
255
+ __decorate([
256
+ ApiPropertyOptional({ description: 'm/s' }),
257
+ Type(() => Number),
258
+ IsNumber(),
259
+ Min(0),
260
+ Max(150),
261
+ IsOptional(),
262
+ __metadata("design:type", Number)
263
+ ], FollowMeTrackPointDto.prototype, "speed", void 0);
264
+ __decorate([
265
+ ApiPropertyOptional({ description: 'Degrees from north' }),
266
+ Type(() => Number),
267
+ IsNumber(),
268
+ Min(0),
269
+ Max(360),
270
+ IsOptional(),
271
+ __metadata("design:type", Number)
272
+ ], FollowMeTrackPointDto.prototype, "heading", void 0);
273
+ __decorate([
274
+ ApiPropertyOptional({ maxLength: 20 }),
275
+ IsString(),
276
+ MaxLength(20),
277
+ IsOptional(),
278
+ __metadata("design:type", String)
279
+ ], FollowMeTrackPointDto.prototype, "source", void 0);
280
+ export class FollowMeTrackPointsDto {
281
+ }
282
+ __decorate([
283
+ ApiProperty({ type: [FollowMeTrackPointDto] }),
284
+ IsArray(),
285
+ ArrayMinSize(1),
286
+ ArrayMaxSize(FOLLOW_ME_LIMITS.maxTrackPointsPerBatch),
287
+ ValidateNested({ each: true }),
288
+ Type(() => FollowMeTrackPointDto),
289
+ __metadata("design:type", Array)
290
+ ], FollowMeTrackPointsDto.prototype, "points", void 0);
291
+ /**
292
+ * The device's evidence for a suspected crash. Only a SUSPICION: clarion-safety
293
+ * checks it against the recorded track and then asks the user, it never raises an
294
+ * SOS from this alone.
295
+ */
296
+ export class ReportFollowMeCrashDto {
297
+ }
298
+ __decorate([
299
+ ApiProperty({ description: 'When the impact happened (ISO 8601)' }),
300
+ IsDateString(),
301
+ __metadata("design:type", String)
302
+ ], ReportFollowMeCrashDto.prototype, "detectedAt", void 0);
303
+ __decorate([
304
+ ApiProperty({ minimum: 0, maximum: 1 }),
305
+ Type(() => Number),
306
+ IsNumber(),
307
+ Min(0),
308
+ Max(1),
309
+ __metadata("design:type", Number)
310
+ ], ReportFollowMeCrashDto.prototype, "confidence", void 0);
311
+ __decorate([
312
+ ApiProperty({ description: 'Peak acceleration magnitude in g' }),
313
+ Type(() => Number),
314
+ IsNumber(),
315
+ Min(0),
316
+ Max(200),
317
+ __metadata("design:type", Number)
318
+ ], ReportFollowMeCrashDto.prototype, "peakAccelerationG", void 0);
319
+ __decorate([
320
+ ApiPropertyOptional({ description: 'Peak rotation rate in rad/s' }),
321
+ Type(() => Number),
322
+ IsNumber(),
323
+ Min(0),
324
+ Max(100),
325
+ IsOptional(),
326
+ __metadata("design:type", Number)
327
+ ], ReportFollowMeCrashDto.prototype, "peakRotationRadS", void 0);
328
+ __decorate([
329
+ ApiPropertyOptional(),
330
+ Type(() => Number),
331
+ IsNumber(),
332
+ Min(0),
333
+ Max(500),
334
+ IsOptional(),
335
+ __metadata("design:type", Number)
336
+ ], ReportFollowMeCrashDto.prototype, "speedBeforeKph", void 0);
337
+ __decorate([
338
+ ApiPropertyOptional(),
339
+ Type(() => Number),
340
+ IsNumber(),
341
+ Min(0),
342
+ Max(500),
343
+ IsOptional(),
344
+ __metadata("design:type", Number)
345
+ ], ReportFollowMeCrashDto.prototype, "speedAfterKph", void 0);
346
+ __decorate([
347
+ ApiPropertyOptional(),
348
+ Type(() => Number),
349
+ IsNumber(),
350
+ Min(0),
351
+ Max(3600),
352
+ IsOptional(),
353
+ __metadata("design:type", Number)
354
+ ], ReportFollowMeCrashDto.prototype, "stillnessSeconds", void 0);
355
+ __decorate([
356
+ ApiProperty({ description: 'A free fall preceded the impact (a dropped phone)' }),
357
+ IsBoolean(),
358
+ __metadata("design:type", Boolean)
359
+ ], ReportFollowMeCrashDto.prototype, "freeFallDetected", void 0);
360
+ __decorate([
361
+ ApiProperty({ example: FOLLOW_ME_CRASH_DETECTION.evidenceVersion }),
362
+ IsString(),
363
+ MaxLength(20),
364
+ __metadata("design:type", String)
365
+ ], ReportFollowMeCrashDto.prototype, "evidenceVersion", void 0);
366
+ __decorate([
367
+ ApiPropertyOptional({ type: SafetyCheckLocationDto }),
368
+ ValidateNested(),
369
+ Type(() => SafetyCheckLocationDto),
370
+ IsOptional(),
371
+ __metadata("design:type", SafetyCheckLocationDto)
372
+ ], ReportFollowMeCrashDto.prototype, "location", void 0);
373
+ /** Answering a prompt: names the prompt so a stale screen cannot answer a newer one. */
374
+ export class ConfirmFollowMePromptDto {
375
+ }
376
+ __decorate([
377
+ ApiProperty({ format: 'uuid' }),
378
+ IsUUID(),
379
+ __metadata("design:type", String)
380
+ ], ConfirmFollowMePromptDto.prototype, "promptId", void 0);
381
+ __decorate([
382
+ ApiPropertyOptional({ type: SafetyCheckLocationDto }),
383
+ ValidateNested(),
384
+ Type(() => SafetyCheckLocationDto),
385
+ IsOptional(),
386
+ __metadata("design:type", SafetyCheckLocationDto)
387
+ ], ConfirmFollowMePromptDto.prototype, "location", void 0);
388
+ /** Filters for the admin Follow Me list; narrows only (scope comes from the caller). */
389
+ export class FollowMeAdminQueryDto {
390
+ }
391
+ __decorate([
392
+ ApiPropertyOptional({ minimum: 1, default: 1 }),
393
+ Type(() => Number),
394
+ IsInt(),
395
+ Min(1),
396
+ IsOptional(),
397
+ __metadata("design:type", Number)
398
+ ], FollowMeAdminQueryDto.prototype, "page", void 0);
399
+ __decorate([
400
+ ApiPropertyOptional({ minimum: 1, maximum: 100, default: 25 }),
401
+ Type(() => Number),
402
+ IsInt(),
403
+ Min(1),
404
+ Max(100),
405
+ IsOptional(),
406
+ __metadata("design:type", Number)
407
+ ], FollowMeAdminQueryDto.prototype, "limit", void 0);
408
+ __decorate([
409
+ ApiPropertyOptional({ enum: FollowMeStatus }),
410
+ IsEnum(FollowMeStatus),
411
+ IsOptional(),
412
+ __metadata("design:type", String)
413
+ ], FollowMeAdminQueryDto.prototype, "status", void 0);
414
+ __decorate([
415
+ ApiPropertyOptional({ description: 'Only sessions still running' }),
416
+ Transform(toOptionalBoolean),
417
+ IsBoolean(),
418
+ IsOptional(),
419
+ __metadata("design:type", Boolean)
420
+ ], FollowMeAdminQueryDto.prototype, "activeOnly", void 0);
421
+ __decorate([
422
+ ApiPropertyOptional({ description: 'Super-admin only' }),
423
+ Type(() => Number),
424
+ IsInt(),
425
+ IsPositive(),
426
+ IsOptional(),
427
+ __metadata("design:type", Number)
428
+ ], FollowMeAdminQueryDto.prototype, "organizationId", void 0);
429
+ __decorate([
430
+ ApiPropertyOptional(),
431
+ Type(() => Number),
432
+ IsInt(),
433
+ IsPositive(),
434
+ IsOptional(),
435
+ __metadata("design:type", Number)
436
+ ], FollowMeAdminQueryDto.prototype, "userId", void 0);
437
+ __decorate([
438
+ ApiPropertyOptional(),
439
+ Transform(toOptionalBoolean),
440
+ IsBoolean(),
441
+ IsOptional(),
442
+ __metadata("design:type", Boolean)
443
+ ], FollowMeAdminQueryDto.prototype, "sosOnly", void 0);
444
+ __decorate([
445
+ ApiPropertyOptional({ description: 'Only sessions the provider was included in' }),
446
+ Transform(toOptionalBoolean),
447
+ IsBoolean(),
448
+ IsOptional(),
449
+ __metadata("design:type", Boolean)
450
+ ], FollowMeAdminQueryDto.prototype, "providerParticipation", void 0);
451
+ __decorate([
452
+ ApiPropertyOptional({ description: 'Started at or after (ISO 8601; a bare date is the start of the day)' }),
453
+ IsDateString(),
454
+ IsOptional(),
455
+ __metadata("design:type", String)
456
+ ], FollowMeAdminQueryDto.prototype, "from", void 0);
457
+ __decorate([
458
+ ApiPropertyOptional({ description: 'Started at or before (ISO 8601; a bare date includes the whole day)' }),
459
+ IsDateString(),
460
+ IsOptional(),
461
+ __metadata("design:type", String)
462
+ ], FollowMeAdminQueryDto.prototype, "to", void 0);
463
+ __decorate([
464
+ ApiPropertyOptional({ format: 'uuid' }),
465
+ IsUUID(),
466
+ IsOptional(),
467
+ __metadata("design:type", String)
468
+ ], FollowMeAdminQueryDto.prototype, "id", void 0);
469
+ __decorate([
470
+ ApiPropertyOptional({ enum: ['startedAt', 'createdAt'], default: 'startedAt' }),
471
+ IsIn(['startedAt', 'createdAt']),
472
+ IsOptional(),
473
+ __metadata("design:type", String)
474
+ ], FollowMeAdminQueryDto.prototype, "sortBy", void 0);
475
+ /** clarion-safety -> clarion-workflow-manager: start the Follow Me timer (idempotent). */
476
+ export class StartFollowMeWorkflowDto {
477
+ }
478
+ __decorate([
479
+ ApiProperty({ format: 'uuid' }),
480
+ IsUUID(),
481
+ __metadata("design:type", String)
482
+ ], StartFollowMeWorkflowDto.prototype, "sessionId", void 0);
483
+ __decorate([
484
+ ApiProperty(),
485
+ IsDateString(),
486
+ __metadata("design:type", String)
487
+ ], StartFollowMeWorkflowDto.prototype, "firstWakeAt", void 0);
488
+ //# sourceMappingURL=follow-me.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"follow-me.dto.js","sourceRoot":"","sources":["../../../../../src/modules/safety/dtos/follow-me.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,MAAM,EACN,IAAI,EACJ,KAAK,EACL,gBAAgB,EAChB,QAAQ,EACR,UAAU,EACV,UAAU,EACV,QAAQ,EACR,MAAM,EACN,OAAO,EACP,GAAG,EACH,SAAS,EACT,GAAG,EACH,SAAS,EACT,cAAc,GACjB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACvG,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE5D,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,MAAM,iBAAiB,GAAG,CAAC,EAAE,KAAK,EAAsB,EAAuB,EAAE;IAC7E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC5E,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,UAAU,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,iFAAiF;AACjF,MAAM,OAAO,mBAAmB;CA2C/B;AAxCG;IAFC,WAAW,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;IAC3C,MAAM,CAAC,oBAAoB,CAAC;;iDACD;AAO5B;IALC,WAAW,EAAE;IACb,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,EAAE,CAAC;IACR,GAAG,CAAC,EAAE,CAAC;;gDACK;AAOb;IALC,WAAW,EAAE;IACb,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,GAAG,CAAC;IACT,GAAG,CAAC,GAAG,CAAC;;gDACI;AAOb;IALC,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAChD,SAAS,CAAC,IAAI,CAAC;IACf,QAAQ,EAAE;IACV,SAAS,CAAC,CAAC,CAAC;IACZ,SAAS,CAAC,GAAG,CAAC;;kDACA;AAOf;IALC,mBAAmB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IACvC,SAAS,CAAC,IAAI,CAAC;IACf,QAAQ,EAAE;IACV,SAAS,CAAC,GAAG,CAAC;IACd,UAAU,EAAE;;oDACI;AAMjB;IAJC,mBAAmB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,iDAAiD,EAAE,CAAC;IACvG,QAAQ,EAAE;IACV,SAAS,CAAC,GAAG,CAAC;IACd,UAAU,EAAE;;oDACI;AAKjB;IAHC,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,sCAAsC,EAAE,CAAC;IAC5F,MAAM,EAAE;IACR,UAAU,EAAE;;yDACS;AAG1B;;;;GAIG;AACH,MAAM,OAAO,uBAAuB;CAYnC;AATG;IAFC,WAAW,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;IAC5C,MAAM,CAAC,qBAAqB,CAAC;;8DACQ;AAQtC;IANC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,mBAAmB,CAAC,EAAE,CAAC;IAC5C,OAAO,EAAE;IACT,YAAY,CAAC,CAAC,CAAC;IACf,YAAY,CAAC,gBAAgB,CAAC,oBAAoB,GAAG,CAAC,CAAC;IACvD,cAAc,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC;;0DACE;AAGtC;;;;GAIG;AACH,MAAM,OAAO,oBAAoB;CAKhC;AADG;IAHC,WAAW,CAAC,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;IAC1E,QAAQ,EAAE;IACV,OAAO,CAAC,yBAAyB,CAAC;;wDACf;AAGxB;;;;;GAKG;AACH,MAAM,OAAO,gBAAgB;CA4E5B;AAzEG;IAFC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,uDAAuD,EAAE,CAAC;IACrG,MAAM,EAAE;;kDACS;AAOlB;IALC,mBAAmB,CAAC,EAAE,SAAS,EAAE,gBAAgB,CAAC,qBAAqB,EAAE,CAAC;IAC1E,SAAS,CAAC,IAAI,CAAC;IACf,QAAQ,EAAE;IACV,SAAS,CAAC,gBAAgB,CAAC,qBAAqB,CAAC;IACjD,UAAU,EAAE;;sDACS;AAUtB;IARC,WAAW,CAAC;QACT,OAAO,EAAE,gBAAgB,CAAC,kBAAkB;QAC5C,OAAO,EAAE,gBAAgB,CAAC,kBAAkB;KAC/C,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;IACxC,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,CAAC;;yDAChB;AAYzB;IAVC,mBAAmB,CAAC;QACjB,OAAO,EAAE,gBAAgB,CAAC,yBAAyB;QACnD,OAAO,EAAE,gBAAgB,CAAC,yBAAyB;QACnD,OAAO,EAAE,gBAAgB,CAAC,6BAA6B;KAC1D,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,GAAG,CAAC,gBAAgB,CAAC,yBAAyB,CAAC;IAC/C,GAAG,CAAC,gBAAgB,CAAC,yBAAyB,CAAC;IAC/C,UAAU,EAAE;;gEACmB;AAMhC;IAJC,WAAW,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,mEAAmE,EAAE,CAAC;IAC5H,gBAAgB,EAAE;IAClB,cAAc,EAAE;IAChB,IAAI,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC;8BACpB,mBAAmB;mDAAC;AAIhC;IAFC,WAAW,CAAC,EAAE,WAAW,EAAE,qFAAqF,EAAE,CAAC;IACnH,SAAS,EAAE;;+DACoB;AAMhC;IAJC,WAAW,CAAC;QACT,WAAW,EAAE,mHAAmH;KACnI,CAAC;IACD,SAAS,EAAE;;mEACwB;AAKpC;IAHC,mBAAmB,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;IAC7G,MAAM,CAAC,qBAAqB,CAAC;IAC7B,UAAU,EAAE;;uDACyB;AAMtC;IAJC,mBAAmB,CAAC,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC;IACnD,cAAc,EAAE;IAChB,IAAI,CAAC,GAAG,EAAE,CAAC,oBAAoB,CAAC;IAChC,UAAU,EAAE;8BACL,oBAAoB;+CAAC;AAM7B;IAJC,mBAAmB,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,WAAW,EAAE,iCAAiC,EAAE,CAAC;IACrG,cAAc,EAAE;IAChB,IAAI,CAAC,GAAG,EAAE,CAAC,sBAAsB,CAAC;IAClC,UAAU,EAAE;8BACG,sBAAsB;uDAAC;AAKvC;IAHC,mBAAmB,CAAC,EAAE,WAAW,EAAE,8FAA8F,EAAE,CAAC;IACpI,SAAS,EAAE;IACX,UAAU,EAAE;;mEACuB;AAKpC;IAHC,mBAAmB,CAAC,EAAE,WAAW,EAAE,2EAA2E,EAAE,CAAC;IACjH,SAAS,EAAE;IACX,UAAU,EAAE;;iEACqB;AAGtC,mEAAmE;AACnE,MAAM,OAAO,qBAAqB;CAwDjC;AAlDG;IALC,WAAW,EAAE;IACb,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,EAAE,CAAC;IACR,GAAG,CAAC,EAAE,CAAC;;kDACK;AAOb;IALC,WAAW,EAAE;IACb,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,GAAG,CAAC;IACT,GAAG,CAAC,GAAG,CAAC;;kDACI;AAIb;IAFC,WAAW,CAAC,EAAE,WAAW,EAAE,yCAAyC,EAAE,CAAC;IACvE,YAAY,EAAE;;wDACI;AAQnB;IANC,mBAAmB,EAAE;IACrB,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,MAAO,CAAC;IACZ,UAAU,EAAE;;uDACK;AAQlB;IANC,mBAAmB,EAAE;IACrB,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,GAAG,CAAC;IACT,GAAG,CAAC,KAAM,CAAC;IACX,UAAU,EAAE;;uDACK;AAQlB;IANC,mBAAmB,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;IAC3C,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,GAAG,CAAC;IACR,UAAU,EAAE;;oDACE;AAQf;IANC,mBAAmB,CAAC,EAAE,WAAW,EAAE,oBAAoB,EAAE,CAAC;IAC1D,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,GAAG,CAAC;IACR,UAAU,EAAE;;sDACI;AAMjB;IAJC,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACtC,QAAQ,EAAE;IACV,SAAS,CAAC,EAAE,CAAC;IACb,UAAU,EAAE;;qDACG;AAGpB,MAAM,OAAO,sBAAsB;CAQlC;AADG;IANC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,qBAAqB,CAAC,EAAE,CAAC;IAC9C,OAAO,EAAE;IACT,YAAY,CAAC,CAAC,CAAC;IACf,YAAY,CAAC,gBAAgB,CAAC,sBAAsB,CAAC;IACrD,cAAc,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC;;sDACD;AAGrC;;;;GAIG;AACH,MAAM,OAAO,sBAAsB;CAiElC;AA9DG;IAFC,WAAW,CAAC,EAAE,WAAW,EAAE,qCAAqC,EAAE,CAAC;IACnE,YAAY,EAAE;;0DACK;AAOpB;IALC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IACvC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,CAAC,CAAC;;0DACa;AAOpB;IALC,WAAW,CAAC,EAAE,WAAW,EAAE,kCAAkC,EAAE,CAAC;IAChE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,GAAG,CAAC;;iEACkB;AAQ3B;IANC,mBAAmB,CAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;IACnE,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,GAAG,CAAC;IACR,UAAU,EAAE;;gEACa;AAQ1B;IANC,mBAAmB,EAAE;IACrB,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,GAAG,CAAC;IACR,UAAU,EAAE;;8DACW;AAQxB;IANC,mBAAmB,EAAE;IACrB,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,GAAG,CAAC;IACR,UAAU,EAAE;;6DACU;AAQvB;IANC,mBAAmB,EAAE;IACrB,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,QAAQ,EAAE;IACV,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,IAAI,CAAC;IACT,UAAU,EAAE;;gEACa;AAI1B;IAFC,WAAW,CAAC,EAAE,WAAW,EAAE,mDAAmD,EAAE,CAAC;IACjF,SAAS,EAAE;;gEACe;AAK3B;IAHC,WAAW,CAAC,EAAE,OAAO,EAAE,yBAAyB,CAAC,eAAe,EAAE,CAAC;IACnE,QAAQ,EAAE;IACV,SAAS,CAAC,EAAE,CAAC;;+DACW;AAMzB;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;wDAAC;AAGtC,wFAAwF;AACxF,MAAM,OAAO,wBAAwB;CAUpC;AAPG;IAFC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC/B,MAAM,EAAE;;0DACS;AAMlB;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;0DAAC;AAGtC,wFAAwF;AACxF,MAAM,OAAO,qBAAqB;CAwEjC;AAlEG;IALC,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC/C,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,GAAG,CAAC,CAAC,CAAC;IACN,UAAU,EAAE;;mDACC;AAQd;IANC,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC9D,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,GAAG,CAAC;IACR,UAAU,EAAE;;oDACE;AAKf;IAHC,mBAAmB,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC;IAC7C,MAAM,CAAC,cAAc,CAAC;IACtB,UAAU,EAAE;;qDACW;AAMxB;IAJC,mBAAmB,CAAC,EAAE,WAAW,EAAE,6BAA6B,EAAE,CAAC;IACnE,SAAS,CAAC,iBAAiB,CAAC;IAC5B,SAAS,EAAE;IACX,UAAU,EAAE;;yDACQ;AAOrB;IALC,mBAAmB,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;IACxD,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,UAAU,EAAE;IACZ,UAAU,EAAE;;6DACW;AAOxB;IALC,mBAAmB,EAAE;IACrB,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,UAAU,EAAE;IACZ,UAAU,EAAE;;qDACG;AAMhB;IAJC,mBAAmB,EAAE;IACrB,SAAS,CAAC,iBAAiB,CAAC;IAC5B,SAAS,EAAE;IACX,UAAU,EAAE;;sDACK;AAMlB;IAJC,mBAAmB,CAAC,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;IAClF,SAAS,CAAC,iBAAiB,CAAC;IAC5B,SAAS,EAAE;IACX,UAAU,EAAE;;oEACmB;AAKhC;IAHC,mBAAmB,CAAC,EAAE,WAAW,EAAE,qEAAqE,EAAE,CAAC;IAC3G,YAAY,EAAE;IACd,UAAU,EAAE;;mDACC;AAKd;IAHC,mBAAmB,CAAC,EAAE,WAAW,EAAE,qEAAqE,EAAE,CAAC;IAC3G,YAAY,EAAE;IACd,UAAU,EAAE;;iDACD;AAKZ;IAHC,mBAAmB,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACvC,MAAM,EAAE;IACR,UAAU,EAAE;;iDACD;AAKZ;IAHC,mBAAmB,CAAC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAC/E,IAAI,CAAC,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAChC,UAAU,EAAE;;qDACsB;AAGvC,0FAA0F;AAC1F,MAAM,OAAO,wBAAwB;CAQpC;AALG;IAFC,WAAW,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC/B,MAAM,EAAE;;2DACU;AAInB;IAFC,WAAW,EAAE;IACb,YAAY,EAAE;;6DACM"}
@@ -12,6 +12,7 @@ import { Transform, Type } from 'class-transformer';
12
12
  import { IsBoolean, IsDateString, IsEnum, IsInt, IsOptional, IsPositive, IsString, IsUUID, Matches, Max, MaxLength, Min, MinLength, } from 'class-validator';
13
13
  import { CountryCode } from '../../country/enums/country-code.enum';
14
14
  import { SafetyCheckStatus } from '../enums/safety-check-status.enum';
15
+ import { SafetyFeature } from '../enums/safety-enums';
15
16
  /** Turns 'true'/'false' query strings into booleans without accepting anything else. */
16
17
  const toOptionalBoolean = ({ value }) => {
17
18
  if (value === undefined || value === null || value === '')
@@ -142,6 +143,12 @@ __decorate([
142
143
  IsOptional(),
143
144
  __metadata("design:type", String)
144
145
  ], CreateSafetyCheckReasonDto.prototype, "countryCode", void 0);
146
+ __decorate([
147
+ ApiPropertyOptional({ enum: SafetyFeature, default: SafetyFeature.SAFETY_CHECK, description: 'Which feature offers it' }),
148
+ IsEnum(SafetyFeature),
149
+ IsOptional(),
150
+ __metadata("design:type", String)
151
+ ], CreateSafetyCheckReasonDto.prototype, "feature", void 0);
145
152
  __decorate([
146
153
  ApiPropertyOptional({ description: 'The "Write my own" entry: the user types the reason.', default: false }),
147
154
  IsBoolean(),
@@ -222,4 +229,10 @@ __decorate([
222
229
  IsOptional(),
223
230
  __metadata("design:type", Boolean)
224
231
  ], SafetyCheckReasonAdminQueryDto.prototype, "includeInactive", void 0);
232
+ __decorate([
233
+ ApiPropertyOptional({ enum: SafetyFeature, description: 'One feature only; both when omitted' }),
234
+ IsEnum(SafetyFeature),
235
+ IsOptional(),
236
+ __metadata("design:type", String)
237
+ ], SafetyCheckReasonAdminQueryDto.prototype, "feature", void 0);
225
238
  //# sourceMappingURL=safety-admin.dto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"safety-admin.dto.js","sourceRoot":"","sources":["../../../../../src/modules/safety/dtos/safety-admin.dto.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"safety-admin.dto.js","sourceRoot":"","sources":["../../../../../src/modules/safety/dtos/safety-admin.dto.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EACH,SAAS,EACT,YAAY,EACZ,MAAM,EACN,KAAK,EACL,UAAU,EACV,UAAU,EACV,QAAQ,EACR,MAAM,EACN,OAAO,EACP,GAAG,EACH,SAAS,EACT,GAAG,EACH,SAAS,GACZ,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD,wFAAwF;AACxF,MAAM,iBAAiB,GAAG,CAAC,EAAE,KAAK,EAAsB,EAAuB,EAAE;IAC7E,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,SAAS,CAAC;IAC5E,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC;IAC/C,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACvC,IAAI,UAAU,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACzC,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,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;AACnG,MAAM,KAAK,GAAG,CAAC,EAAE,KAAK,EAAsB,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AAElH;;;;GAIG;AACH,MAAM,OAAO,wBAAwB;CAuDpC;AAjDG;IALC,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC/C,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,GAAG,CAAC,CAAC,CAAC;IACN,UAAU,EAAE;;sDACC;AAQd;IANC,mBAAmB,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAC9D,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,GAAG,CAAC;IACR,UAAU,EAAE;;uDACE;AAKf;IAHC,mBAAmB,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC;IAChD,MAAM,CAAC,iBAAiB,CAAC;IACzB,UAAU,EAAE;;wDACc;AAO3B;IALC,mBAAmB,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;IACxD,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,UAAU,EAAE;IACZ,UAAU,EAAE;;gEACW;AAOxB;IALC,mBAAmB,EAAE;IACrB,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,UAAU,EAAE;IACZ,UAAU,EAAE;;wDACG;AAMhB;IAJC,mBAAmB,CAAC,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;IACtE,SAAS,CAAC,iBAAiB,CAAC;IAC5B,SAAS,EAAE;IACX,UAAU,EAAE;;yDACK;AAKlB;IAHC,mBAAmB,CAAC,EAAE,WAAW,EAAE,yEAAyE,EAAE,CAAC;IAC/G,YAAY,EAAE;IACd,UAAU,EAAE;;sDACC;AAKd;IAHC,mBAAmB,CAAC,EAAE,WAAW,EAAE,qEAAqE,EAAE,CAAC;IAC3G,YAAY,EAAE;IACd,UAAU,EAAE;;oDACD;AAKZ;IAHC,mBAAmB,CAAC,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACzE,MAAM,EAAE;IACR,UAAU,EAAE;;oDACD;AAGhB,4FAA4F;AAC5F,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAE7C,MAAM,OAAO,0BAA0B;CA0DtC;AAtDG;IAHC,mBAAmB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,yDAAyD,EAAE,CAAC;IAC7H,SAAS,CAAC,KAAK,CAAC;IAChB,OAAO,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC;;wDACtE;AAOd;IALC,mBAAmB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACpE,SAAS,CAAC,IAAI,CAAC;IACf,QAAQ,EAAE;IACV,SAAS,CAAC,CAAC,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC;;yDACC;AAOf;IALC,mBAAmB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;IACvC,SAAS,CAAC,IAAI,CAAC;IACf,QAAQ,EAAE;IACV,SAAS,CAAC,GAAG,CAAC;IACd,UAAU,EAAE;;+DACQ;AAUrB;IARC,mBAAmB,CAAC;QACjB,WAAW,EAAE,0FAA0F;YACnG,yDAAyD;KAChE,CAAC;IACD,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,UAAU,EAAE;IACZ,UAAU,EAAE;;kEACW;AAMxB;IAJC,mBAAmB,CAAC,EAAE,WAAW,EAAE,0DAA0D,EAAE,CAAC;IAChG,SAAS,CAAC,KAAK,CAAC;IAChB,MAAM,CAAC,WAAW,CAAC;IACnB,UAAU,EAAE;;+DACQ;AAKrB;IAHC,mBAAmB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,CAAC,YAAY,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;IACzH,MAAM,CAAC,aAAa,CAAC;IACrB,UAAU,EAAE;;2DACW;AAKxB;IAHC,mBAAmB,CAAC,EAAE,WAAW,EAAE,sDAAsD,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IAC5G,SAAS,EAAE;IACX,UAAU,EAAE;;4DACM;AAKnB;IAHC,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACtC,SAAS,EAAE;IACX,UAAU,EAAE;;0DACI;AAQjB;IANC,mBAAmB,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IACnF,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,KAAM,CAAC;IACX,UAAU,EAAE;;gEACS;AAG1B,uGAAuG;AACvG,MAAM,OAAO,0BAA0B;CAkCtC;AA3BG;IANC,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACtC,SAAS,CAAC,IAAI,CAAC;IACf,QAAQ,EAAE;IACV,SAAS,CAAC,CAAC,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC;IACb,UAAU,EAAE;;yDACE;AAOf;IALC,mBAAmB,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvD,SAAS,CAAC,IAAI,CAAC;IACf,QAAQ,EAAE;IACV,SAAS,CAAC,GAAG,CAAC;IACd,UAAU,EAAE;;+DACe;AAM5B;IAJC,mBAAmB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACvC,SAAS,CAAC,KAAK,CAAC;IAChB,MAAM,CAAC,WAAW,CAAC;IACnB,UAAU,EAAE;;+DACe;AAK5B;IAHC,mBAAmB,EAAE;IACrB,SAAS,EAAE;IACX,UAAU,EAAE;;0DACI;AAQjB;IANC,mBAAmB,EAAE;IACrB,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,GAAG,CAAC,CAAC,CAAC;IACN,GAAG,CAAC,KAAM,CAAC;IACX,UAAU,EAAE;;gEACS;AAG1B,MAAM,OAAO,8BAA8B;CAkB1C;AAZG;IALC,mBAAmB,CAAC,EAAE,WAAW,EAAE,kFAAkF,EAAE,CAAC;IACxH,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC;IAClB,KAAK,EAAE;IACP,UAAU,EAAE;IACZ,UAAU,EAAE;;sEACW;AAMxB;IAJC,mBAAmB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACtC,SAAS,CAAC,iBAAiB,CAAC;IAC5B,SAAS,EAAE;IACX,UAAU,EAAE;;uEACa;AAK1B;IAHC,mBAAmB,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE,qCAAqC,EAAE,CAAC;IAChG,MAAM,CAAC,aAAa,CAAC;IACrB,UAAU,EAAE;;+DACW"}
@@ -0,0 +1,55 @@
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 { Transform, Type } from 'class-transformer';
12
+ import { ArrayMaxSize, IsArray, IsString, MaxLength, MinLength, ValidateNested } from 'class-validator';
13
+ const trim = ({ value }) => (typeof value === 'string' ? value.trim() : value);
14
+ export class SafetyAlertContextFactDto {
15
+ }
16
+ __decorate([
17
+ ApiProperty({ maxLength: 60, example: 'Destination' }),
18
+ Transform(trim),
19
+ IsString(),
20
+ MinLength(1),
21
+ MaxLength(60),
22
+ __metadata("design:type", String)
23
+ ], SafetyAlertContextFactDto.prototype, "label", void 0);
24
+ __decorate([
25
+ ApiProperty({ maxLength: 200, example: 'Westlands, Nairobi' }),
26
+ Transform(trim),
27
+ IsString(),
28
+ MaxLength(200),
29
+ __metadata("design:type", String)
30
+ ], SafetyAlertContextFactDto.prototype, "value", void 0);
31
+ /**
32
+ * What a responder needs to understand an automatic SOS at a glance, stored on
33
+ * the incident (`originContext`). Plain labelled facts rather than a feature
34
+ * specific schema, so the admin renders any safety feature's context the same
35
+ * way. Never a location history - the incident's trip has that.
36
+ */
37
+ export class SafetyAlertContextDto {
38
+ }
39
+ __decorate([
40
+ ApiProperty({ maxLength: 500, example: 'Follow Me: no response to a possible-crash prompt.' }),
41
+ Transform(trim),
42
+ IsString(),
43
+ MinLength(1),
44
+ MaxLength(500),
45
+ __metadata("design:type", String)
46
+ ], SafetyAlertContextDto.prototype, "summary", void 0);
47
+ __decorate([
48
+ ApiProperty({ type: [SafetyAlertContextFactDto] }),
49
+ IsArray(),
50
+ ArrayMaxSize(20),
51
+ ValidateNested({ each: true }),
52
+ Type(() => SafetyAlertContextFactDto),
53
+ __metadata("design:type", Array)
54
+ ], SafetyAlertContextDto.prototype, "facts", void 0);
55
+ //# sourceMappingURL=safety-alert-context.dto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"safety-alert-context.dto.js","sourceRoot":"","sources":["../../../../../src/modules/safety/dtos/safety-alert-context.dto.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAExG,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,MAAM,OAAO,yBAAyB;CAarC;AAPG;IALC,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE,CAAC;IACtD,SAAS,CAAC,IAAI,CAAC;IACf,QAAQ,EAAE;IACV,SAAS,CAAC,CAAC,CAAC;IACZ,SAAS,CAAC,EAAE,CAAC;;wDACC;AAMf;IAJC,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAC9D,SAAS,CAAC,IAAI,CAAC;IACf,QAAQ,EAAE;IACV,SAAS,CAAC,GAAG,CAAC;;wDACA;AAGnB;;;;;GAKG;AACH,MAAM,OAAO,qBAAqB;CAcjC;AARG;IALC,WAAW,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,EAAE,oDAAoD,EAAE,CAAC;IAC9F,SAAS,CAAC,IAAI,CAAC;IACf,QAAQ,EAAE;IACV,SAAS,CAAC,CAAC,CAAC;IACZ,SAAS,CAAC,GAAG,CAAC;;sDACE;AAOjB;IALC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,yBAAyB,CAAC,EAAE,CAAC;IAClD,OAAO,EAAE;IACT,YAAY,CAAC,EAAE,CAAC;IAChB,cAAc,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9B,IAAI,CAAC,GAAG,EAAE,CAAC,yBAAyB,CAAC;;oDACF"}
@@ -13,6 +13,7 @@ import { ArrayMaxSize, IsArray, IsBoolean, IsDateString, IsEnum, IsInt, IsNotEmp
13
13
  import { GuardianAudienceDto } from '../../alert-dispatch/dtos/guardian-audience.dto';
14
14
  import { SafetyCheckSosTrigger, SafetyFeature } from '../enums/safety-enums';
15
15
  import { SafetyCheckLocationDto } from './safety-check.dto';
16
+ import { SafetyAlertContextDto } from './safety-alert-context.dto';
16
17
  const trim = ({ value }) => (typeof value === 'string' ? value.trim() : value);
17
18
  /**
18
19
  * clarion-safety -> clarion-incident: raise the SOS for a safety feature.
@@ -104,6 +105,22 @@ __decorate([
104
105
  IsOptional(),
105
106
  __metadata("design:type", String)
106
107
  ], CreateSafetyAlertIncidentDto.prototype, "description", void 0);
108
+ __decorate([
109
+ ApiPropertyOptional({
110
+ format: 'uuid',
111
+ description: 'An existing clarion-chat conversation (Follow Me) the incident adopts instead of creating one, so its history carries over',
112
+ }),
113
+ IsUUID(),
114
+ IsOptional(),
115
+ __metadata("design:type", String)
116
+ ], CreateSafetyAlertIncidentDto.prototype, "conversationId", void 0);
117
+ __decorate([
118
+ ApiPropertyOptional({ type: SafetyAlertContextDto, description: 'What responders see about why the SOS was raised' }),
119
+ ValidateNested(),
120
+ Type(() => SafetyAlertContextDto),
121
+ IsOptional(),
122
+ __metadata("design:type", SafetyAlertContextDto)
123
+ ], CreateSafetyAlertIncidentDto.prototype, "context", void 0);
107
124
  /** clarion-safety -> clarion-workflow-manager: start the durable timer. Idempotent per check. */
108
125
  export class StartSafetyCheckWorkflowDto {
109
126
  }