@opencrvs/toolkit 1.8.0-rc.feaeeb7 → 1.8.0-rc.feef45c
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/commons/api/router.d.ts +10781 -10314
- package/dist/commons/conditionals/conditionals.d.ts +31 -5
- package/dist/commons/conditionals/validate-address.test.d.ts +2 -0
- package/dist/commons/conditionals/validate.d.ts +39 -17
- package/dist/commons/conditionals/validate.test.d.ts +2 -0
- package/dist/commons/events/ActionConfig.d.ts +85782 -2035
- package/dist/commons/events/ActionDocument.d.ts +9850 -363
- package/dist/commons/events/ActionInput.d.ts +5365 -584
- package/dist/commons/events/ActionType.d.ts +27 -12
- package/dist/commons/events/AdvancedSearchConfig.d.ts +371 -25
- package/dist/commons/events/CompositeFieldValue.d.ts +155 -2
- package/dist/commons/events/Conditional.d.ts +21 -5
- package/dist/commons/events/Draft.d.ts +374 -59
- package/dist/commons/events/EventConfig.d.ts +40846 -1801
- package/dist/commons/events/EventConfigInput.d.ts +6 -3
- package/dist/commons/events/EventDocument.d.ts +3672 -504
- package/dist/commons/events/EventIndex.d.ts +921 -7
- package/dist/commons/events/EventInput.d.ts +13 -0
- package/dist/commons/events/EventMetadata.d.ts +16 -3
- package/dist/commons/events/FieldConfig.d.ts +3955 -757
- package/dist/commons/events/FieldType.d.ts +6 -2
- package/dist/commons/events/FieldTypeMapping.d.ts +154 -3
- package/dist/commons/events/FieldValue.d.ts +77 -3
- package/dist/commons/events/FormConfig.d.ts +38982 -69
- package/dist/commons/events/PageConfig.d.ts +9803 -0
- package/dist/commons/events/SummaryConfig.d.ts +81 -42
- package/dist/commons/events/TemplateConfig.d.ts +30 -10
- package/dist/commons/events/User.d.ts +5 -0
- package/dist/commons/events/WorkqueueConfig.d.ts +44 -20
- package/dist/commons/events/defineConfig.d.ts +6749 -230
- package/dist/commons/events/event.d.ts +25 -0
- package/dist/commons/events/field.d.ts +68 -0
- package/dist/commons/events/index.d.ts +5 -1
- package/dist/commons/events/scopes.d.ts +26 -0
- package/dist/commons/events/test.utils.d.ts +128 -238
- package/dist/commons/events/utils.d.ts +3528 -90
- package/dist/commons/events/utils.test.d.ts +2 -0
- package/dist/conditionals/index.js +196 -108
- package/dist/events/index.js +2201 -1197
- package/package.json +3 -2
package/dist/events/index.js
CHANGED
@@ -30,29 +30,50 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
30
30
|
// src/events/index.ts
|
31
31
|
var events_exports = {};
|
32
32
|
__export(events_exports, {
|
33
|
+
ACTION_ALLOWED_SCOPES: () => ACTION_ALLOWED_SCOPES,
|
34
|
+
Action: () => Action,
|
33
35
|
ActionBase: () => ActionBase,
|
34
36
|
ActionConditional: () => ActionConditional,
|
35
37
|
ActionConfig: () => ActionConfig,
|
36
38
|
ActionConfigBase: () => ActionConfigBase,
|
37
39
|
ActionDocument: () => ActionDocument,
|
40
|
+
ActionFormConfig: () => ActionFormConfig,
|
38
41
|
ActionInput: () => ActionInput,
|
42
|
+
ActionStatus: () => ActionStatus,
|
39
43
|
ActionType: () => ActionType,
|
44
|
+
ActionTypes: () => ActionTypes,
|
40
45
|
ActionUpdate: () => ActionUpdate,
|
41
46
|
AddressFieldUpdateValue: () => AddressFieldUpdateValue,
|
42
47
|
AddressFieldValue: () => AddressFieldValue,
|
48
|
+
AddressType: () => AddressType,
|
49
|
+
AdministrativeAreas: () => AdministrativeAreas,
|
43
50
|
AdvancedSearchConfig: () => AdvancedSearchConfig,
|
44
51
|
ApproveCorrectionActionInput: () => ApproveCorrectionActionInput,
|
45
|
-
|
52
|
+
ArchiveActionInput: () => ArchiveActionInput,
|
53
|
+
AssignActionInput: () => AssignActionInput,
|
54
|
+
AsyncRejectActionDocument: () => AsyncRejectActionDocument,
|
46
55
|
BaseActionInput: () => BaseActionInput,
|
56
|
+
CONFIG_GET_ALLOWED_SCOPES: () => CONFIG_GET_ALLOWED_SCOPES,
|
57
|
+
CONFIG_SEARCH_ALLOWED_SCOPES: () => CONFIG_SEARCH_ALLOWED_SCOPES,
|
47
58
|
CertificateConfig: () => CertificateConfig,
|
48
59
|
CertificateTemplateConfig: () => CertificateTemplateConfig,
|
49
60
|
CheckboxFieldValue: () => CheckboxFieldValue,
|
50
61
|
Clause: () => Clause,
|
51
62
|
Conditional: () => Conditional,
|
52
63
|
ConditionalType: () => ConditionalType,
|
64
|
+
ConfirmableActions: () => ConfirmableActions,
|
65
|
+
DataEntry: () => DataEntry,
|
66
|
+
DataFieldValue: () => DataFieldValue,
|
53
67
|
DateValue: () => DateValue,
|
68
|
+
DeclarationActionConfig: () => DeclarationActionConfig,
|
69
|
+
DeclarationActions: () => DeclarationActions,
|
70
|
+
DeclarationFormConfig: () => DeclarationFormConfig,
|
71
|
+
DeclarationReviewConfig: () => DeclarationReviewConfig,
|
72
|
+
DeclarationUpdateActions: () => DeclarationUpdateActions,
|
54
73
|
DeclareActionInput: () => DeclareActionInput,
|
55
74
|
DeduplicationConfig: () => DeduplicationConfig,
|
75
|
+
DeleteActionInput: () => DeleteActionInput,
|
76
|
+
DisplayOnReviewConditional: () => DisplayOnReviewConditional,
|
56
77
|
Draft: () => Draft,
|
57
78
|
DraftInput: () => DraftInput,
|
58
79
|
EmailField: () => EmailField,
|
@@ -60,13 +81,17 @@ __export(events_exports, {
|
|
60
81
|
EnableConditional: () => EnableConditional,
|
61
82
|
EventConfig: () => EventConfig,
|
62
83
|
EventDocument: () => EventDocument,
|
84
|
+
EventFieldConfigSchema: () => EventFieldConfigSchema,
|
85
|
+
EventFieldId: () => EventFieldId,
|
63
86
|
EventIndex: () => EventIndex,
|
64
87
|
EventInput: () => EventInput,
|
65
88
|
EventMetadata: () => EventMetadata,
|
66
89
|
EventSearchIndex: () => EventSearchIndex,
|
67
90
|
EventStatus: () => EventStatus,
|
68
91
|
EventStatuses: () => EventStatuses,
|
92
|
+
FieldConditional: () => FieldConditional,
|
69
93
|
FieldConfig: () => FieldConfig,
|
94
|
+
FieldConfigSchema: () => FieldConfigSchema,
|
70
95
|
FieldType: () => FieldType,
|
71
96
|
FieldUpdateValue: () => FieldUpdateValue,
|
72
97
|
FieldValue: () => FieldValue,
|
@@ -74,38 +99,67 @@ __export(events_exports, {
|
|
74
99
|
FileFieldValueWithOption: () => FileFieldValueWithOption,
|
75
100
|
FileFieldWithOptionValue: () => FileFieldWithOptionValue,
|
76
101
|
FormConfig: () => FormConfig,
|
77
|
-
|
102
|
+
FormPageConfig: () => FormPageConfig,
|
103
|
+
GenericAddressUpdateValue: () => GenericAddressUpdateValue,
|
104
|
+
GenericAddressValue: () => GenericAddressValue,
|
78
105
|
GeographicalArea: () => GeographicalArea,
|
106
|
+
ImageMimeType: () => ImageMimeType,
|
79
107
|
LanguageConfig: () => LanguageConfig,
|
80
108
|
MarkedAsDuplicateActionInput: () => MarkedAsDuplicateActionInput,
|
109
|
+
MatchType: () => MatchType,
|
110
|
+
MimeType: () => MimeType,
|
111
|
+
NonEmptyTextValue: () => NonEmptyTextValue,
|
81
112
|
NotifyActionInput: () => NotifyActionInput,
|
82
113
|
NumberFieldValue: () => NumberFieldValue,
|
114
|
+
PageConfig: () => PageConfig,
|
115
|
+
PageTypes: () => PageTypes,
|
83
116
|
PrintCertificateActionInput: () => PrintCertificateActionInput,
|
117
|
+
QueryInput: () => QueryInput,
|
118
|
+
QueryType: () => QueryType,
|
119
|
+
ReadActionInput: () => ReadActionInput,
|
120
|
+
RegisterAction: () => RegisterAction,
|
84
121
|
RegisterActionInput: () => RegisterActionInput,
|
85
122
|
RejectCorrectionActionInput: () => RejectCorrectionActionInput,
|
86
123
|
RejectDeclarationActionInput: () => RejectDeclarationActionInput,
|
87
124
|
RequestCorrectionActionInput: () => RequestCorrectionActionInput,
|
88
|
-
RequiredTextValue: () => RequiredTextValue,
|
89
125
|
ResolvedUser: () => ResolvedUser,
|
90
126
|
RuralAddressUpdateValue: () => RuralAddressUpdateValue,
|
91
127
|
RuralAddressValue: () => RuralAddressValue,
|
128
|
+
SearchField: () => SearchField,
|
129
|
+
SelectOption: () => SelectOption,
|
92
130
|
ShowConditional: () => ShowConditional,
|
93
131
|
SummaryConfig: () => SummaryConfig,
|
94
132
|
TextValue: () => TextValue,
|
95
133
|
TranslationConfig: () => TranslationConfig,
|
134
|
+
UnassignActionInput: () => UnassignActionInput,
|
96
135
|
UrbanAddressUpdateValue: () => UrbanAddressUpdateValue,
|
97
136
|
UrbanAddressValue: () => UrbanAddressValue,
|
98
137
|
ValidateActionInput: () => ValidateActionInput,
|
138
|
+
VerificationActionConfig: () => VerificationActionConfig,
|
139
|
+
VerificationPageConfig: () => VerificationPageConfig,
|
99
140
|
WorkqueueConfig: () => WorkqueueConfig,
|
141
|
+
ZodDate: () => ZodDate,
|
100
142
|
alwaysTrue: () => alwaysTrue,
|
101
143
|
and: () => and,
|
144
|
+
annotationActions: () => annotationActions,
|
102
145
|
applyDraftsToEventIndex: () => applyDraftsToEventIndex,
|
146
|
+
areConditionsMet: () => areConditionsMet,
|
147
|
+
compositeFieldTypes: () => compositeFieldTypes,
|
148
|
+
createEmptyDraft: () => createEmptyDraft,
|
149
|
+
createEventConditionals: () => createEventConditionals,
|
150
|
+
createFieldConditionals: () => createFieldConditionals,
|
103
151
|
createValidationSchema: () => createValidationSchema,
|
104
152
|
deepDropNulls: () => deepDropNulls,
|
153
|
+
deepMerge: () => deepMerge,
|
154
|
+
defineActionForm: () => defineActionForm,
|
105
155
|
defineConditional: () => defineConditional,
|
106
156
|
defineConfig: () => defineConfig,
|
107
|
-
|
157
|
+
defineDeclarationForm: () => defineDeclarationForm,
|
158
|
+
defineFormConditional: () => defineFormConditional,
|
108
159
|
defineFormPage: () => defineFormPage,
|
160
|
+
definePage: () => definePage,
|
161
|
+
defineWorkqueue: () => defineWorkqueue,
|
162
|
+
errorMessages: () => errorMessages,
|
109
163
|
event: () => event,
|
110
164
|
eventMetadataLabelMap: () => eventMetadataLabelMap,
|
111
165
|
eventPayloadGenerator: () => eventPayloadGenerator,
|
@@ -113,36 +167,46 @@ __export(events_exports, {
|
|
113
167
|
eventStatuses: () => eventStatuses,
|
114
168
|
field: () => field,
|
115
169
|
fieldTypes: () => fieldTypes,
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
170
|
+
filterUnallowedActions: () => filterUnallowedActions,
|
171
|
+
findActiveDrafts: () => findActiveDrafts,
|
172
|
+
findAllFields: () => findAllFields,
|
173
|
+
findLastAssignmentAction: () => findLastAssignmentAction,
|
174
|
+
findRecordActionPages: () => findRecordActionPages,
|
175
|
+
generateActionAnnotationInput: () => generateActionAnnotationInput,
|
176
|
+
generateActionDeclarationInput: () => generateActionDeclarationInput,
|
122
177
|
generateActionDocument: () => generateActionDocument,
|
123
|
-
generateActionInput: () => generateActionInput,
|
124
178
|
generateEventDocument: () => generateEventDocument,
|
125
179
|
generateEventDraftDocument: () => generateEventDraftDocument,
|
126
180
|
generateTransactionId: () => generateTransactionId,
|
127
|
-
|
128
|
-
|
129
|
-
|
181
|
+
generateTranslationConfig: () => generateTranslationConfig,
|
182
|
+
getAcceptedActions: () => getAcceptedActions,
|
183
|
+
getActionAnnotation: () => getActionAnnotation,
|
184
|
+
getActionAnnotationFields: () => getActionAnnotationFields,
|
185
|
+
getActionReview: () => getActionReview,
|
186
|
+
getActionReviewFields: () => getActionReviewFields,
|
187
|
+
getActionVerificationPageIds: () => getActionVerificationPageIds,
|
188
|
+
getAnnotationFromDrafts: () => getAnnotationFromDrafts,
|
189
|
+
getAssignedUserFromActions: () => getAssignedUserFromActions,
|
130
190
|
getCurrentEventState: () => getCurrentEventState,
|
131
191
|
getCurrentEventStateWithDrafts: () => getCurrentEventStateWithDrafts,
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
192
|
+
getDeclaration: () => getDeclaration,
|
193
|
+
getDeclarationFields: () => getDeclarationFields,
|
194
|
+
getDeclarationPages: () => getDeclarationPages,
|
195
|
+
getVisibleVerificationPageIds: () => getVisibleVerificationPageIds,
|
196
|
+
hasAnyOfScopes: () => hasAnyOfScopes,
|
136
197
|
isAddressFieldType: () => isAddressFieldType,
|
137
198
|
isAdministrativeAreaFieldType: () => isAdministrativeAreaFieldType,
|
138
199
|
isBulletListFieldType: () => isBulletListFieldType,
|
139
200
|
isCheckboxFieldType: () => isCheckboxFieldType,
|
201
|
+
isConditionMet: () => isConditionMet,
|
140
202
|
isCountryFieldType: () => isCountryFieldType,
|
203
|
+
isDataFieldType: () => isDataFieldType,
|
141
204
|
isDateFieldType: () => isDateFieldType,
|
142
|
-
isDefaultValue: () => isDefaultValue,
|
143
205
|
isDividerFieldType: () => isDividerFieldType,
|
144
206
|
isEmailFieldType: () => isEmailFieldType,
|
145
207
|
isFacilityFieldType: () => isFacilityFieldType,
|
208
|
+
isFieldConfigDefaultValue: () => isFieldConfigDefaultValue,
|
209
|
+
isFieldDisplayedOnReview: () => isFieldDisplayedOnReview,
|
146
210
|
isFieldEnabled: () => isFieldEnabled,
|
147
211
|
isFieldValue: () => isFieldValue,
|
148
212
|
isFieldValueWithoutTemplates: () => isFieldValueWithoutTemplates,
|
@@ -153,6 +217,7 @@ __export(events_exports, {
|
|
153
217
|
isNumberFieldType: () => isNumberFieldType,
|
154
218
|
isOfficeFieldType: () => isOfficeFieldType,
|
155
219
|
isPageHeaderFieldType: () => isPageHeaderFieldType,
|
220
|
+
isPageVisible: () => isPageVisible,
|
156
221
|
isParagraphFieldType: () => isParagraphFieldType,
|
157
222
|
isRadioGroupFieldType: () => isRadioGroupFieldType,
|
158
223
|
isSelectFieldType: () => isSelectFieldType,
|
@@ -161,49 +226,72 @@ __export(events_exports, {
|
|
161
226
|
isTextAreaFieldType: () => isTextAreaFieldType,
|
162
227
|
isTextFieldType: () => isTextFieldType,
|
163
228
|
isUndeclaredDraft: () => isUndeclaredDraft,
|
229
|
+
isVerificationPage: () => isVerificationPage,
|
230
|
+
isWriteAction: () => isWriteAction,
|
231
|
+
mapFieldTypeToEmptyValue: () => mapFieldTypeToEmptyValue,
|
164
232
|
mapFieldTypeToMockValue: () => mapFieldTypeToMockValue,
|
165
233
|
mapFieldTypeToZod: () => mapFieldTypeToZod,
|
234
|
+
never: () => never,
|
166
235
|
not: () => not,
|
236
|
+
omitHiddenAnnotationFields: () => omitHiddenAnnotationFields,
|
237
|
+
omitHiddenFields: () => omitHiddenFields,
|
238
|
+
omitHiddenPaginatedFields: () => omitHiddenPaginatedFields,
|
167
239
|
or: () => or,
|
168
|
-
|
169
|
-
stripHiddenFields: () => stripHiddenFields,
|
240
|
+
runFieldValidations: () => runFieldValidations,
|
170
241
|
user: () => user,
|
171
242
|
validate: () => validate,
|
172
243
|
validateFieldInput: () => validateFieldInput,
|
173
|
-
|
244
|
+
writeActions: () => writeActions
|
174
245
|
});
|
175
246
|
module.exports = __toCommonJS(events_exports);
|
176
247
|
|
177
248
|
// ../commons/src/events/ActionConfig.ts
|
178
|
-
var
|
249
|
+
var import_zod9 = require("zod");
|
179
250
|
|
180
251
|
// ../commons/src/events/Conditional.ts
|
181
252
|
var import_zod = require("zod");
|
182
|
-
|
183
|
-
|
184
|
-
|
253
|
+
var Conditional = import_zod.z.custom(
|
254
|
+
(val) => typeof val === "object" && val !== null
|
255
|
+
);
|
185
256
|
var ConditionalType = {
|
186
|
-
/** When 'SHOW' conditional is defined, the action is shown to the user only if the condition is met */
|
187
257
|
SHOW: "SHOW",
|
188
|
-
|
189
|
-
|
258
|
+
ENABLE: "ENABLE",
|
259
|
+
DISPLAY_ON_REVIEW: "DISPLAY_ON_REVIEW"
|
190
260
|
};
|
191
261
|
var ShowConditional = import_zod.z.object({
|
192
262
|
type: import_zod.z.literal(ConditionalType.SHOW),
|
193
|
-
conditional: Conditional
|
194
|
-
})
|
263
|
+
conditional: Conditional
|
264
|
+
}).describe(
|
265
|
+
"If 'SHOW' conditional is defined, the component is shown to the user only if the condition is met"
|
266
|
+
);
|
195
267
|
var EnableConditional = import_zod.z.object({
|
196
268
|
type: import_zod.z.literal(ConditionalType.ENABLE),
|
197
|
-
conditional: Conditional
|
198
|
-
})
|
269
|
+
conditional: Conditional
|
270
|
+
}).describe(
|
271
|
+
"If 'ENABLE' conditional is defined, the component is enabled only if the condition is met"
|
272
|
+
);
|
199
273
|
var ActionConditional = import_zod.z.discriminatedUnion("type", [
|
200
274
|
// Action can be shown / hidden
|
201
275
|
ShowConditional,
|
202
276
|
// Action can be shown to the user in the list but as disabled
|
203
277
|
EnableConditional
|
204
278
|
]);
|
279
|
+
var DisplayOnReviewConditional = import_zod.z.object({
|
280
|
+
type: import_zod.z.literal(ConditionalType.DISPLAY_ON_REVIEW),
|
281
|
+
conditional: Conditional
|
282
|
+
}).describe(
|
283
|
+
"If 'DISPLAY_ON_REVIEW' conditional is defined, the component is shown on the review page only if both the 'DISPLAY_ON_REVIEW' and 'SHOW' conditions are met. This should only be used for fields within declaration forms, as they are the only ones with review pages."
|
284
|
+
);
|
285
|
+
var FieldConditional = import_zod.z.discriminatedUnion("type", [
|
286
|
+
// Field input can be shown / hidden
|
287
|
+
ShowConditional,
|
288
|
+
// Field input can be shown to the user but as disabled
|
289
|
+
EnableConditional,
|
290
|
+
// Field output can be shown / hidden on the review page
|
291
|
+
DisplayOnReviewConditional
|
292
|
+
]);
|
205
293
|
|
206
|
-
// ../commons/src/events/
|
294
|
+
// ../commons/src/events/PageConfig.ts
|
207
295
|
var import_zod6 = require("zod");
|
208
296
|
|
209
297
|
// ../commons/src/events/FieldConfig.ts
|
@@ -234,7 +322,6 @@ var FieldType = {
|
|
234
322
|
RADIO_GROUP: "RADIO_GROUP",
|
235
323
|
FILE: "FILE",
|
236
324
|
FILE_WITH_OPTIONS: "FILE_WITH_OPTIONS",
|
237
|
-
HIDDEN: "HIDDEN",
|
238
325
|
BULLET_LIST: "BULLET_LIST",
|
239
326
|
CHECKBOX: "CHECKBOX",
|
240
327
|
SELECT: "SELECT",
|
@@ -244,9 +331,15 @@ var FieldType = {
|
|
244
331
|
ADMINISTRATIVE_AREA: "ADMINISTRATIVE_AREA",
|
245
332
|
FACILITY: "FACILITY",
|
246
333
|
OFFICE: "OFFICE",
|
247
|
-
SIGNATURE: "SIGNATURE"
|
334
|
+
SIGNATURE: "SIGNATURE",
|
335
|
+
DATA: "DATA"
|
248
336
|
};
|
249
337
|
var fieldTypes = Object.values(FieldType);
|
338
|
+
var compositeFieldTypes = [
|
339
|
+
FieldType.ADDRESS,
|
340
|
+
FieldType.FILE_WITH_OPTIONS,
|
341
|
+
FieldType.FILE
|
342
|
+
];
|
250
343
|
|
251
344
|
// ../commons/src/events/FieldValue.ts
|
252
345
|
var import_zod4 = require("zod");
|
@@ -257,6 +350,10 @@ var GeographicalArea = {
|
|
257
350
|
URBAN: "URBAN",
|
258
351
|
RURAL: "RURAL"
|
259
352
|
};
|
353
|
+
var AddressType = {
|
354
|
+
DOMESTIC: "DOMESTIC",
|
355
|
+
INTERNATIONAL: "INTERNATIONAL"
|
356
|
+
};
|
260
357
|
var FileFieldValue = import_zod3.z.object({
|
261
358
|
filename: import_zod3.z.string(),
|
262
359
|
originalFilename: import_zod3.z.string(),
|
@@ -264,6 +361,7 @@ var FileFieldValue = import_zod3.z.object({
|
|
264
361
|
});
|
265
362
|
var AdminStructure = import_zod3.z.object({
|
266
363
|
country: import_zod3.z.string(),
|
364
|
+
addressType: import_zod3.z.literal(AddressType.DOMESTIC),
|
267
365
|
province: import_zod3.z.string(),
|
268
366
|
district: import_zod3.z.string()
|
269
367
|
});
|
@@ -291,14 +389,33 @@ var RuralAddressUpdateValue = AdminStructure.extend({
|
|
291
389
|
urbanOrRural: import_zod3.z.literal(GeographicalArea.RURAL),
|
292
390
|
village: import_zod3.z.string().nullish()
|
293
391
|
});
|
294
|
-
var
|
295
|
-
|
296
|
-
|
297
|
-
|
392
|
+
var GenericAddressValue = import_zod3.z.object({
|
393
|
+
country: import_zod3.z.string(),
|
394
|
+
addressType: import_zod3.z.literal(AddressType.INTERNATIONAL),
|
395
|
+
state: import_zod3.z.string(),
|
396
|
+
district2: import_zod3.z.string(),
|
397
|
+
cityOrTown: import_zod3.z.string().optional(),
|
398
|
+
addressLine1: import_zod3.z.string().optional(),
|
399
|
+
addressLine2: import_zod3.z.string().optional(),
|
400
|
+
addressLine3: import_zod3.z.string().optional(),
|
401
|
+
postcodeOrZip: import_zod3.z.string().optional()
|
402
|
+
});
|
403
|
+
var AddressFieldValue = import_zod3.z.discriminatedUnion("urbanOrRural", [UrbanAddressValue, RuralAddressValue]).or(GenericAddressValue);
|
404
|
+
var GenericAddressUpdateValue = import_zod3.z.object({
|
405
|
+
country: import_zod3.z.string(),
|
406
|
+
addressType: import_zod3.z.literal(AddressType.INTERNATIONAL),
|
407
|
+
state: import_zod3.z.string(),
|
408
|
+
district2: import_zod3.z.string(),
|
409
|
+
cityOrTown: import_zod3.z.string().nullish(),
|
410
|
+
addressLine1: import_zod3.z.string().nullish(),
|
411
|
+
addressLine2: import_zod3.z.string().nullish(),
|
412
|
+
addressLine3: import_zod3.z.string().nullish(),
|
413
|
+
postcodeOrZip: import_zod3.z.string().nullish()
|
414
|
+
});
|
298
415
|
var AddressFieldUpdateValue = import_zod3.z.discriminatedUnion("urbanOrRural", [
|
299
416
|
UrbanAddressUpdateValue,
|
300
417
|
RuralAddressUpdateValue
|
301
|
-
]);
|
418
|
+
]).or(GenericAddressUpdateValue);
|
302
419
|
var FileFieldValueWithOption = import_zod3.z.object({
|
303
420
|
filename: import_zod3.z.string(),
|
304
421
|
originalFilename: import_zod3.z.string(),
|
@@ -309,11 +426,12 @@ var FileFieldWithOptionValue = import_zod3.z.array(FileFieldValueWithOption);
|
|
309
426
|
|
310
427
|
// ../commons/src/events/FieldValue.ts
|
311
428
|
var TextValue = import_zod4.z.string();
|
312
|
-
var
|
429
|
+
var NonEmptyTextValue = TextValue.min(1);
|
313
430
|
var DateValue = import_zod4.z.string().date().describe("Date in the format YYYY-MM-DD");
|
314
431
|
var EmailValue = import_zod4.z.string().email();
|
315
432
|
var CheckboxFieldValue = import_zod4.z.boolean();
|
316
433
|
var NumberFieldValue = import_zod4.z.number();
|
434
|
+
var DataFieldValue = import_zod4.z.undefined();
|
317
435
|
var FieldValue = import_zod4.z.union([
|
318
436
|
TextValue,
|
319
437
|
DateValue,
|
@@ -322,7 +440,9 @@ var FieldValue = import_zod4.z.union([
|
|
322
440
|
FileFieldValue,
|
323
441
|
FileFieldWithOptionValue,
|
324
442
|
UrbanAddressValue,
|
325
|
-
RuralAddressValue
|
443
|
+
RuralAddressValue,
|
444
|
+
DataFieldValue,
|
445
|
+
GenericAddressValue
|
326
446
|
]);
|
327
447
|
var FieldUpdateValue = import_zod4.z.union([
|
328
448
|
TextValue,
|
@@ -332,40 +452,35 @@ var FieldUpdateValue = import_zod4.z.union([
|
|
332
452
|
FileFieldValue,
|
333
453
|
FileFieldWithOptionValue,
|
334
454
|
UrbanAddressUpdateValue,
|
335
|
-
RuralAddressUpdateValue
|
455
|
+
RuralAddressUpdateValue,
|
456
|
+
DataFieldValue,
|
457
|
+
GenericAddressUpdateValue
|
336
458
|
]);
|
337
459
|
|
338
460
|
// ../commons/src/events/FieldConfig.ts
|
339
461
|
var FieldId = import_zod5.z.string();
|
340
|
-
var
|
341
|
-
|
342
|
-
|
343
|
-
});
|
462
|
+
var ParentReference = import_zod5.z.object({
|
463
|
+
_fieldId: FieldId.optional()
|
464
|
+
}).optional();
|
344
465
|
var BaseField = import_zod5.z.object({
|
345
466
|
id: FieldId,
|
346
467
|
defaultValue: import_zod5.z.union([
|
347
|
-
|
348
|
-
|
349
|
-
|
350
|
-
|
351
|
-
|
352
|
-
NumberFieldValue,
|
353
|
-
CheckboxFieldValue
|
354
|
-
]),
|
355
|
-
DependencyExpression
|
468
|
+
TextValue,
|
469
|
+
NonEmptyTextValue,
|
470
|
+
DateValue,
|
471
|
+
NumberFieldValue,
|
472
|
+
CheckboxFieldValue
|
356
473
|
]).optional(),
|
357
|
-
|
474
|
+
parent: ParentReference,
|
475
|
+
conditionals: import_zod5.z.array(FieldConditional).default([]).optional(),
|
358
476
|
required: import_zod5.z.boolean().default(false).optional(),
|
359
|
-
disabled: import_zod5.z.boolean().default(false).optional(),
|
360
|
-
hidden: import_zod5.z.boolean().default(false).optional(),
|
361
477
|
placeholder: TranslationConfig.optional(),
|
362
478
|
validation: import_zod5.z.array(
|
363
479
|
import_zod5.z.object({
|
364
|
-
validator: Conditional
|
480
|
+
validator: Conditional,
|
365
481
|
message: TranslationConfig
|
366
482
|
})
|
367
483
|
).default([]).optional(),
|
368
|
-
dependsOn: import_zod5.z.array(FieldId).default([]).optional(),
|
369
484
|
label: TranslationConfig,
|
370
485
|
hideLabel: import_zod5.z.boolean().default(false).optional()
|
371
486
|
});
|
@@ -374,7 +489,7 @@ var Divider = BaseField.extend({
|
|
374
489
|
});
|
375
490
|
var TextField = BaseField.extend({
|
376
491
|
type: import_zod5.z.literal(FieldType.TEXT),
|
377
|
-
defaultValue:
|
492
|
+
defaultValue: NonEmptyTextValue.optional(),
|
378
493
|
configuration: import_zod5.z.object({
|
379
494
|
maxLength: import_zod5.z.number().optional().describe("Maximum length of the text"),
|
380
495
|
type: import_zod5.z.enum(["text", "password"]).optional(),
|
@@ -384,7 +499,7 @@ var TextField = BaseField.extend({
|
|
384
499
|
}).describe("Text input");
|
385
500
|
var NumberField = BaseField.extend({
|
386
501
|
type: import_zod5.z.literal(FieldType.NUMBER),
|
387
|
-
defaultValue:
|
502
|
+
defaultValue: NumberFieldValue.optional(),
|
388
503
|
configuration: import_zod5.z.object({
|
389
504
|
min: import_zod5.z.number().optional().describe("Minimum value"),
|
390
505
|
max: import_zod5.z.number().optional().describe("Maximum value"),
|
@@ -394,7 +509,7 @@ var NumberField = BaseField.extend({
|
|
394
509
|
}).describe("Number input");
|
395
510
|
var TextAreaField = BaseField.extend({
|
396
511
|
type: import_zod5.z.literal(FieldType.TEXTAREA),
|
397
|
-
defaultValue:
|
512
|
+
defaultValue: NonEmptyTextValue.optional(),
|
398
513
|
configuration: import_zod5.z.object({
|
399
514
|
maxLength: import_zod5.z.number().optional().describe("Maximum length of the text"),
|
400
515
|
rows: import_zod5.z.number().optional().describe("Number of visible text lines"),
|
@@ -403,26 +518,36 @@ var TextAreaField = BaseField.extend({
|
|
403
518
|
postfix: TranslationConfig.optional()
|
404
519
|
}).default({ rows: 4 }).optional()
|
405
520
|
}).describe("Multiline text input");
|
521
|
+
var ImageMimeType = import_zod5.z.enum([
|
522
|
+
"image/png",
|
523
|
+
"image/jpg",
|
524
|
+
"image/jpeg",
|
525
|
+
"image/svg+xml"
|
526
|
+
]);
|
527
|
+
var MimeType = ImageMimeType;
|
528
|
+
var DEFAULT_MAX_FILE_SIZE_BYTES = 5 * 1024 * 1024;
|
406
529
|
var SignatureField = BaseField.extend({
|
407
530
|
type: import_zod5.z.literal(FieldType.SIGNATURE),
|
408
531
|
signaturePromptLabel: TranslationConfig.describe(
|
409
532
|
"Title of the signature modal"
|
410
533
|
),
|
411
534
|
configuration: import_zod5.z.object({
|
412
|
-
|
413
|
-
|
414
|
-
}).default({
|
535
|
+
maxFileSize: import_zod5.z.number().describe("Maximum file size in bytes").default(DEFAULT_MAX_FILE_SIZE_BYTES),
|
536
|
+
acceptedFileTypes: MimeType.array().optional().describe("List of allowed file formats for the signature")
|
537
|
+
}).default({
|
538
|
+
maxFileSize: DEFAULT_MAX_FILE_SIZE_BYTES
|
539
|
+
})
|
415
540
|
}).describe("Signature input field");
|
416
541
|
var EmailField = BaseField.extend({
|
417
542
|
type: import_zod5.z.literal(FieldType.EMAIL),
|
418
543
|
configuration: import_zod5.z.object({
|
419
544
|
maxLength: import_zod5.z.number().optional().describe("Maximum length of the text")
|
420
545
|
}).default({ maxLength: 10 }).optional(),
|
421
|
-
defaultValue:
|
546
|
+
defaultValue: NonEmptyTextValue.optional()
|
422
547
|
});
|
423
548
|
var DateField = BaseField.extend({
|
424
549
|
type: import_zod5.z.literal(FieldType.DATE),
|
425
|
-
defaultValue:
|
550
|
+
defaultValue: DateValue.optional(),
|
426
551
|
configuration: import_zod5.z.object({
|
427
552
|
notice: TranslationConfig.describe(
|
428
553
|
"Text to display above the date input"
|
@@ -441,7 +566,7 @@ var HtmlFontVariant = import_zod5.z.enum([
|
|
441
566
|
]);
|
442
567
|
var Paragraph = BaseField.extend({
|
443
568
|
type: import_zod5.z.literal(FieldType.PARAGRAPH),
|
444
|
-
defaultValue:
|
569
|
+
defaultValue: NonEmptyTextValue.optional(),
|
445
570
|
configuration: import_zod5.z.object({
|
446
571
|
styles: import_zod5.z.object({
|
447
572
|
fontVariant: HtmlFontVariant.optional()
|
@@ -450,17 +575,22 @@ var Paragraph = BaseField.extend({
|
|
450
575
|
}).describe("A read-only HTML <p> paragraph");
|
451
576
|
var PageHeader = BaseField.extend({
|
452
577
|
type: import_zod5.z.literal(FieldType.PAGE_HEADER),
|
453
|
-
defaultValue:
|
578
|
+
defaultValue: NonEmptyTextValue.optional()
|
454
579
|
}).describe("A read-only header component for form pages");
|
455
580
|
var File = BaseField.extend({
|
456
581
|
type: import_zod5.z.literal(FieldType.FILE),
|
457
|
-
|
582
|
+
configuration: import_zod5.z.object({
|
583
|
+
maxFileSize: import_zod5.z.number().describe("Maximum file size in bytes").default(DEFAULT_MAX_FILE_SIZE_BYTES),
|
584
|
+
acceptedFileTypes: MimeType.array().optional().describe("List of allowed file formats for the signature"),
|
458
585
|
style: import_zod5.z.object({
|
459
|
-
|
586
|
+
width: import_zod5.z.enum(["full", "auto"]).optional().describe(
|
460
587
|
"Whether the file upload button should take the full width of the container or not"
|
461
588
|
)
|
462
|
-
})
|
463
|
-
|
589
|
+
}).optional(),
|
590
|
+
fileName: TranslationConfig.optional()
|
591
|
+
}).default({
|
592
|
+
maxFileSize: DEFAULT_MAX_FILE_SIZE_BYTES
|
593
|
+
})
|
464
594
|
}).describe("File upload");
|
465
595
|
var SelectOption = import_zod5.z.object({
|
466
596
|
value: import_zod5.z.string().describe("The value of the option"),
|
@@ -468,7 +598,7 @@ var SelectOption = import_zod5.z.object({
|
|
468
598
|
});
|
469
599
|
var RadioGroup = BaseField.extend({
|
470
600
|
type: import_zod5.z.literal(FieldType.RADIO_GROUP),
|
471
|
-
defaultValue:
|
601
|
+
defaultValue: TextValue.optional(),
|
472
602
|
options: import_zod5.z.array(SelectOption).describe("A list of options"),
|
473
603
|
configuration: import_zod5.z.object({
|
474
604
|
styles: import_zod5.z.object({
|
@@ -478,7 +608,7 @@ var RadioGroup = BaseField.extend({
|
|
478
608
|
}).describe("Grouped radio options");
|
479
609
|
var BulletList = BaseField.extend({
|
480
610
|
type: import_zod5.z.literal(FieldType.BULLET_LIST),
|
481
|
-
defaultValue:
|
611
|
+
defaultValue: TextValue.optional(),
|
482
612
|
items: import_zod5.z.array(TranslationConfig).describe("A list of items"),
|
483
613
|
configuration: import_zod5.z.object({
|
484
614
|
styles: import_zod5.z.object({
|
@@ -488,48 +618,75 @@ var BulletList = BaseField.extend({
|
|
488
618
|
}).describe("A list of bullet points");
|
489
619
|
var Select = BaseField.extend({
|
490
620
|
type: import_zod5.z.literal(FieldType.SELECT),
|
491
|
-
defaultValue:
|
621
|
+
defaultValue: TextValue.optional(),
|
492
622
|
options: import_zod5.z.array(SelectOption).describe("A list of options")
|
493
623
|
}).describe("Select input");
|
494
624
|
var Checkbox = BaseField.extend({
|
495
625
|
type: import_zod5.z.literal(FieldType.CHECKBOX),
|
496
|
-
defaultValue:
|
626
|
+
defaultValue: CheckboxFieldValue.optional()
|
497
627
|
}).describe("Boolean checkbox field");
|
498
628
|
var Country = BaseField.extend({
|
499
629
|
type: import_zod5.z.literal(FieldType.COUNTRY),
|
500
|
-
defaultValue:
|
630
|
+
defaultValue: NonEmptyTextValue.optional()
|
501
631
|
}).describe("Country select field");
|
632
|
+
var AdministrativeAreas = import_zod5.z.enum([
|
633
|
+
"ADMIN_STRUCTURE",
|
634
|
+
"HEALTH_FACILITY",
|
635
|
+
"CRVS_OFFICE"
|
636
|
+
]);
|
502
637
|
var AdministrativeAreaConfiguration = import_zod5.z.object({
|
503
638
|
partOf: import_zod5.z.object({
|
504
|
-
$
|
639
|
+
$declaration: import_zod5.z.string()
|
505
640
|
}).optional().describe("Parent location"),
|
506
|
-
type:
|
641
|
+
type: AdministrativeAreas
|
507
642
|
}).describe("Administrative area options");
|
508
643
|
var AdministrativeArea = BaseField.extend({
|
509
644
|
type: import_zod5.z.literal(FieldType.ADMINISTRATIVE_AREA),
|
510
|
-
defaultValue:
|
645
|
+
defaultValue: NonEmptyTextValue.optional(),
|
511
646
|
configuration: AdministrativeAreaConfiguration
|
512
647
|
}).describe("Administrative area input field e.g. facility, office");
|
513
648
|
var Location = BaseField.extend({
|
514
649
|
type: import_zod5.z.literal(FieldType.LOCATION),
|
515
|
-
defaultValue:
|
650
|
+
defaultValue: NonEmptyTextValue.optional()
|
516
651
|
}).describe("Input field for a location");
|
517
652
|
var FileUploadWithOptions = BaseField.extend({
|
518
653
|
type: import_zod5.z.literal(FieldType.FILE_WITH_OPTIONS),
|
519
|
-
options: import_zod5.z.array(SelectOption).describe("A list of options")
|
520
|
-
|
654
|
+
options: import_zod5.z.array(SelectOption).describe("A list of options"),
|
655
|
+
configuration: import_zod5.z.object({
|
656
|
+
maxFileSize: import_zod5.z.number().describe("Maximum file size in bytes").default(DEFAULT_MAX_FILE_SIZE_BYTES),
|
657
|
+
acceptedFileTypes: MimeType.array().optional().describe("List of allowed file formats for the signature")
|
658
|
+
}).default({
|
659
|
+
maxFileSize: DEFAULT_MAX_FILE_SIZE_BYTES
|
660
|
+
})
|
661
|
+
});
|
521
662
|
var Facility = BaseField.extend({
|
522
663
|
type: import_zod5.z.literal(FieldType.FACILITY),
|
523
|
-
defaultValue:
|
664
|
+
defaultValue: NonEmptyTextValue.optional()
|
524
665
|
}).describe("Input field for a facility");
|
525
666
|
var Office = BaseField.extend({
|
526
667
|
type: import_zod5.z.literal(FieldType.OFFICE),
|
527
|
-
defaultValue:
|
668
|
+
defaultValue: NonEmptyTextValue.optional()
|
528
669
|
}).describe("Input field for an office");
|
529
670
|
var Address = BaseField.extend({
|
530
671
|
type: import_zod5.z.literal(FieldType.ADDRESS),
|
531
672
|
defaultValue: AddressFieldValue.optional()
|
532
673
|
}).describe("Address input field \u2013 a combination of location and text fields");
|
674
|
+
var DataEntry = import_zod5.z.union([
|
675
|
+
import_zod5.z.object({
|
676
|
+
label: TranslationConfig,
|
677
|
+
value: TranslationConfig.or(import_zod5.z.string())
|
678
|
+
}),
|
679
|
+
import_zod5.z.object({
|
680
|
+
fieldId: import_zod5.z.string()
|
681
|
+
})
|
682
|
+
]);
|
683
|
+
var DataField = BaseField.extend({
|
684
|
+
type: import_zod5.z.literal(FieldType.DATA),
|
685
|
+
configuration: import_zod5.z.object({
|
686
|
+
subtitle: TranslationConfig.optional(),
|
687
|
+
data: import_zod5.z.array(DataEntry)
|
688
|
+
})
|
689
|
+
}).describe("Data field for displaying read-only data");
|
533
690
|
var FieldConfig = import_zod5.z.discriminatedUnion("type", [
|
534
691
|
Address,
|
535
692
|
TextField,
|
@@ -551,244 +708,331 @@ var FieldConfig = import_zod5.z.discriminatedUnion("type", [
|
|
551
708
|
Office,
|
552
709
|
SignatureField,
|
553
710
|
EmailField,
|
554
|
-
FileUploadWithOptions
|
711
|
+
FileUploadWithOptions,
|
712
|
+
DataField
|
555
713
|
]);
|
556
714
|
|
557
|
-
// ../commons/src/events/
|
558
|
-
var
|
715
|
+
// ../commons/src/events/PageConfig.ts
|
716
|
+
var PageTypes = import_zod6.z.enum(["FORM", "VERIFICATION"]);
|
717
|
+
var PageConfigBase = import_zod6.z.object({
|
559
718
|
id: import_zod6.z.string().describe("Unique identifier for the page"),
|
560
719
|
title: TranslationConfig.describe("Header title of the page"),
|
561
|
-
fields: import_zod6.z.array(FieldConfig).describe("Fields to be rendered on the page")
|
720
|
+
fields: import_zod6.z.array(FieldConfig).describe("Fields to be rendered on the page"),
|
721
|
+
conditional: Conditional.optional().describe(
|
722
|
+
"Page will be shown if condition is met. If conditional is not defined, the page will be always shown."
|
723
|
+
)
|
562
724
|
});
|
563
|
-
var
|
564
|
-
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
label: TranslationConfig
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
pages: import_zod6.z.array(FormPage),
|
575
|
-
review: import_zod6.z.object({
|
576
|
-
title: TranslationConfig.describe(
|
577
|
-
"Title of the form to show in review page"
|
578
|
-
),
|
579
|
-
fields: import_zod6.z.array(FieldConfig).describe("Fields to be rendered on the review page for metadata")
|
725
|
+
var FormPageConfig = PageConfigBase.extend({
|
726
|
+
type: import_zod6.z.literal(PageTypes.enum.FORM).default(PageTypes.enum.FORM)
|
727
|
+
});
|
728
|
+
var VerificationActionConfig = import_zod6.z.object({
|
729
|
+
verify: import_zod6.z.object({ label: TranslationConfig }),
|
730
|
+
cancel: import_zod6.z.object({
|
731
|
+
label: TranslationConfig,
|
732
|
+
confirmation: import_zod6.z.object({
|
733
|
+
title: TranslationConfig,
|
734
|
+
body: TranslationConfig
|
735
|
+
})
|
580
736
|
})
|
737
|
+
}).describe("Actions available on the verification page");
|
738
|
+
var VerificationPageConfig = FormPageConfig.extend({
|
739
|
+
type: import_zod6.z.literal(PageTypes.enum.VERIFICATION),
|
740
|
+
actions: VerificationActionConfig
|
581
741
|
});
|
742
|
+
var PageConfig = import_zod6.z.discriminatedUnion("type", [
|
743
|
+
FormPageConfig,
|
744
|
+
VerificationPageConfig
|
745
|
+
]);
|
582
746
|
|
583
747
|
// ../commons/src/events/ActionType.ts
|
748
|
+
var import_zod7 = require("zod");
|
584
749
|
var ActionType = {
|
750
|
+
// Pre-declaration actions
|
751
|
+
DELETE: "DELETE",
|
585
752
|
CREATE: "CREATE",
|
586
|
-
ASSIGN: "ASSIGN",
|
587
|
-
UNASSIGN: "UNASSIGN",
|
588
|
-
REGISTER: "REGISTER",
|
589
|
-
VALIDATE: "VALIDATE",
|
590
|
-
REQUEST_CORRECTION: "REQUEST_CORRECTION",
|
591
|
-
REJECT_CORRECTION: "REJECT_CORRECTION",
|
592
|
-
APPROVE_CORRECTION: "APPROVE_CORRECTION",
|
593
|
-
DETECT_DUPLICATE: "DETECT_DUPLICATE",
|
594
753
|
NOTIFY: "NOTIFY",
|
754
|
+
// Declaration actions
|
595
755
|
DECLARE: "DECLARE",
|
596
|
-
|
597
|
-
|
598
|
-
|
756
|
+
VALIDATE: "VALIDATE",
|
757
|
+
REGISTER: "REGISTER",
|
758
|
+
// Declaration system actions. Non-configurable.
|
759
|
+
DETECT_DUPLICATE: "DETECT_DUPLICATE",
|
599
760
|
REJECT: "REJECT",
|
761
|
+
// REJECT_DECLARATION
|
600
762
|
MARKED_AS_DUPLICATE: "MARKED_AS_DUPLICATE",
|
601
|
-
|
763
|
+
// MARK_AS_DUPLICATE
|
764
|
+
ARCHIVE: "ARCHIVE",
|
765
|
+
// Record actions
|
766
|
+
PRINT_CERTIFICATE: "PRINT_CERTIFICATE",
|
767
|
+
REQUEST_CORRECTION: "REQUEST_CORRECTION",
|
768
|
+
REJECT_CORRECTION: "REJECT_CORRECTION",
|
769
|
+
APPROVE_CORRECTION: "APPROVE_CORRECTION",
|
770
|
+
// General actions
|
771
|
+
READ: "READ",
|
772
|
+
ASSIGN: "ASSIGN",
|
773
|
+
UNASSIGN: "UNASSIGN"
|
602
774
|
};
|
775
|
+
var ConfirmableActions = [
|
776
|
+
ActionType.NOTIFY,
|
777
|
+
ActionType.DECLARE,
|
778
|
+
ActionType.VALIDATE,
|
779
|
+
ActionType.REGISTER,
|
780
|
+
ActionType.REJECT,
|
781
|
+
ActionType.ARCHIVE,
|
782
|
+
ActionType.PRINT_CERTIFICATE
|
783
|
+
];
|
784
|
+
var ActionTypes = import_zod7.z.enum([
|
785
|
+
"DELETE",
|
786
|
+
"CREATE",
|
787
|
+
"NOTIFY",
|
788
|
+
"DECLARE",
|
789
|
+
"VALIDATE",
|
790
|
+
"REGISTER",
|
791
|
+
"DETECT_DUPLICATE",
|
792
|
+
"REJECT",
|
793
|
+
"MARKED_AS_DUPLICATE",
|
794
|
+
"ARCHIVE",
|
795
|
+
"PRINT_CERTIFICATE",
|
796
|
+
"REQUEST_CORRECTION",
|
797
|
+
"REJECT_CORRECTION",
|
798
|
+
"APPROVE_CORRECTION",
|
799
|
+
"READ",
|
800
|
+
"ASSIGN",
|
801
|
+
"UNASSIGN"
|
802
|
+
]);
|
803
|
+
var declarationActionValues = [
|
804
|
+
ActionTypes.enum.DECLARE,
|
805
|
+
ActionTypes.enum.VALIDATE,
|
806
|
+
ActionTypes.enum.REGISTER
|
807
|
+
];
|
808
|
+
var DeclarationActions = ActionTypes.extract(declarationActionValues);
|
809
|
+
var declarationUpdateActionValues = [
|
810
|
+
...declarationActionValues,
|
811
|
+
ActionTypes.enum.REQUEST_CORRECTION
|
812
|
+
];
|
813
|
+
var DeclarationUpdateActions = ActionTypes.extract(
|
814
|
+
declarationUpdateActionValues
|
815
|
+
);
|
816
|
+
var annotationActions = ActionTypes.exclude(declarationActionValues);
|
817
|
+
var writeActions = ActionTypes.exclude([
|
818
|
+
ActionType.CREATE,
|
819
|
+
ActionType.READ,
|
820
|
+
ActionType.ASSIGN,
|
821
|
+
ActionType.UNASSIGN
|
822
|
+
]);
|
823
|
+
|
824
|
+
// ../commons/src/events/FormConfig.ts
|
825
|
+
var import_zod8 = require("zod");
|
826
|
+
var DeclarationFormConfig = import_zod8.z.object({
|
827
|
+
label: TranslationConfig.describe("Human readable description of the form"),
|
828
|
+
pages: import_zod8.z.array(FormPageConfig)
|
829
|
+
}).describe("Configuration for a declaration form");
|
830
|
+
var ActionFormConfig = import_zod8.z.object({
|
831
|
+
label: TranslationConfig.describe("Human readable description of the form"),
|
832
|
+
pages: import_zod8.z.array(PageConfig)
|
833
|
+
});
|
834
|
+
var FormConfig = import_zod8.z.union([DeclarationFormConfig, ActionFormConfig]);
|
603
835
|
|
604
836
|
// ../commons/src/events/ActionConfig.ts
|
605
|
-
var
|
837
|
+
var import_zod_openapi = require("zod-openapi");
|
838
|
+
(0, import_zod_openapi.extendZodWithOpenApi)(import_zod9.z);
|
839
|
+
var ActionConditional2 = import_zod9.z.discriminatedUnion("type", [
|
606
840
|
/** If conditional is defined, the action is shown to the user only if the condition is met */
|
607
841
|
ShowConditional,
|
608
842
|
/** If conditional is defined, the action is enabled only if the condition is met */
|
609
843
|
EnableConditional
|
610
844
|
]);
|
611
|
-
var
|
845
|
+
var DeclarationReviewConfig = import_zod9.z.object({
|
846
|
+
title: TranslationConfig.describe("Title of the review page"),
|
847
|
+
fields: import_zod9.z.array(FieldConfig).describe("Fields to be rendered on the review page for annotations.")
|
848
|
+
}).describe("Configuration for **declaration** review page.");
|
849
|
+
var ActionConfigBase = import_zod9.z.object({
|
612
850
|
label: TranslationConfig,
|
613
|
-
conditionals:
|
614
|
-
draft:
|
615
|
-
forms: import_zod7.z.array(FormConfig)
|
851
|
+
conditionals: import_zod9.z.array(ActionConditional2).optional().default([]),
|
852
|
+
draft: import_zod9.z.boolean().optional()
|
616
853
|
});
|
617
854
|
var DeclareConfig = ActionConfigBase.merge(
|
618
|
-
|
619
|
-
type:
|
855
|
+
import_zod9.z.object({
|
856
|
+
type: import_zod9.z.literal(ActionType.DECLARE),
|
857
|
+
review: DeclarationReviewConfig
|
620
858
|
})
|
621
859
|
);
|
622
860
|
var ValidateConfig = ActionConfigBase.merge(
|
623
|
-
|
624
|
-
type:
|
861
|
+
import_zod9.z.object({
|
862
|
+
type: import_zod9.z.literal(ActionType.VALIDATE),
|
863
|
+
review: DeclarationReviewConfig
|
625
864
|
})
|
626
865
|
);
|
627
|
-
var
|
628
|
-
|
629
|
-
type:
|
630
|
-
|
631
|
-
isDuplicate: import_zod7.z.boolean()
|
866
|
+
var RegisterConfig = ActionConfigBase.merge(
|
867
|
+
import_zod9.z.object({
|
868
|
+
type: import_zod9.z.literal(ActionType.REGISTER),
|
869
|
+
review: DeclarationReviewConfig
|
632
870
|
})
|
633
871
|
);
|
634
|
-
var
|
635
|
-
|
636
|
-
type:
|
637
|
-
comment: import_zod7.z.string(),
|
638
|
-
duplicates: import_zod7.z.array(import_zod7.z.string()).describe("UUIDs of duplicate records")
|
872
|
+
var RejectDeclarationConfig = ActionConfigBase.merge(
|
873
|
+
import_zod9.z.object({
|
874
|
+
type: import_zod9.z.literal(ActionType.REJECT)
|
639
875
|
})
|
640
876
|
);
|
641
|
-
var
|
642
|
-
|
643
|
-
type:
|
644
|
-
comment: import_zod7.z.string(),
|
645
|
-
isDuplicate: import_zod7.z.boolean()
|
877
|
+
var MarkedAsDuplicateConfig = ActionConfigBase.merge(
|
878
|
+
import_zod9.z.object({
|
879
|
+
type: import_zod9.z.literal(ActionType.MARKED_AS_DUPLICATE)
|
646
880
|
})
|
647
881
|
);
|
648
|
-
var
|
649
|
-
|
650
|
-
type:
|
882
|
+
var ArchiveConfig = ActionConfigBase.merge(
|
883
|
+
import_zod9.z.object({
|
884
|
+
type: import_zod9.z.literal(ActionType.ARCHIVE)
|
651
885
|
})
|
652
886
|
);
|
653
887
|
var DeleteConfig = ActionConfigBase.merge(
|
654
|
-
|
655
|
-
type:
|
888
|
+
import_zod9.z.object({
|
889
|
+
type: import_zod9.z.literal(ActionType.DELETE)
|
656
890
|
})
|
657
891
|
);
|
658
892
|
var PrintCertificateActionConfig = ActionConfigBase.merge(
|
659
|
-
|
660
|
-
type:
|
893
|
+
import_zod9.z.object({
|
894
|
+
type: import_zod9.z.literal(ActionType.PRINT_CERTIFICATE),
|
895
|
+
printForm: ActionFormConfig
|
661
896
|
})
|
662
897
|
);
|
663
898
|
var RequestCorrectionConfig = ActionConfigBase.merge(
|
664
|
-
|
665
|
-
type:
|
666
|
-
onboardingForm:
|
667
|
-
additionalDetailsForm:
|
899
|
+
import_zod9.z.object({
|
900
|
+
type: import_zod9.z.literal(ActionType.REQUEST_CORRECTION),
|
901
|
+
onboardingForm: import_zod9.z.array(PageConfig),
|
902
|
+
additionalDetailsForm: import_zod9.z.array(PageConfig)
|
668
903
|
})
|
669
904
|
);
|
670
905
|
var RejectCorrectionConfig = ActionConfigBase.merge(
|
671
|
-
|
672
|
-
type:
|
906
|
+
import_zod9.z.object({
|
907
|
+
type: import_zod9.z.literal(ActionType.REJECT_CORRECTION)
|
673
908
|
})
|
674
909
|
);
|
675
910
|
var ApproveCorrectionConfig = ActionConfigBase.merge(
|
676
|
-
|
677
|
-
type:
|
678
|
-
})
|
679
|
-
);
|
680
|
-
var CustomConfig = ActionConfigBase.merge(
|
681
|
-
import_zod7.z.object({
|
682
|
-
type: import_zod7.z.literal(ActionType.CUSTOM)
|
911
|
+
import_zod9.z.object({
|
912
|
+
type: import_zod9.z.literal(ActionType.APPROVE_CORRECTION)
|
683
913
|
})
|
684
914
|
);
|
685
|
-
var ActionConfig =
|
915
|
+
var ActionConfig = import_zod9.z.discriminatedUnion("type", [
|
916
|
+
/*
|
917
|
+
* OpenAPI references are defined here so our generated OpenAPI spec knows to reuse the models
|
918
|
+
* and treat them as "models" instead of duplicating the data structure in each endpoint.
|
919
|
+
*/
|
920
|
+
DeclareConfig.openapi({ ref: "DeclareActionConfig" }),
|
921
|
+
ValidateConfig.openapi({ ref: "ValidateActionConfig" }),
|
922
|
+
RejectDeclarationConfig.openapi({ ref: "RejectDeclarationActionConfig" }),
|
923
|
+
MarkedAsDuplicateConfig.openapi({ ref: "MarkedAsDuplicateActionConfig" }),
|
924
|
+
ArchiveConfig.openapi({ ref: "ArchiveActionConfig" }),
|
925
|
+
RegisterConfig.openapi({ ref: "RegisterActionConfig" }),
|
926
|
+
DeleteConfig.openapi({ ref: "DeleteActionConfig" }),
|
927
|
+
PrintCertificateActionConfig.openapi({
|
928
|
+
ref: "PrintCertificateActionConfig"
|
929
|
+
}),
|
930
|
+
RequestCorrectionConfig.openapi({ ref: "RequestCorrectionActionConfig" }),
|
931
|
+
RejectCorrectionConfig.openapi({ ref: "RejectCorrectionActionConfig" }),
|
932
|
+
ApproveCorrectionConfig.openapi({ ref: "ApproveCorrectionActionConfig" })
|
933
|
+
]).openapi({ ref: "ActionConfig" });
|
934
|
+
var DeclarationActionConfig = import_zod9.z.discriminatedUnion("type", [
|
686
935
|
DeclareConfig,
|
687
936
|
ValidateConfig,
|
688
|
-
|
689
|
-
MarkedAsDuplicateConfig,
|
690
|
-
ArchivedConfig,
|
691
|
-
RegisterConfig,
|
692
|
-
DeleteConfig,
|
693
|
-
PrintCertificateActionConfig,
|
694
|
-
RequestCorrectionConfig,
|
695
|
-
RejectCorrectionConfig,
|
696
|
-
ApproveCorrectionConfig,
|
697
|
-
CustomConfig
|
937
|
+
RegisterConfig
|
698
938
|
]);
|
699
939
|
|
700
940
|
// ../commons/src/events/offline/CertificateConfig.ts
|
701
|
-
var
|
702
|
-
var FontFamily =
|
703
|
-
normal:
|
704
|
-
bold:
|
705
|
-
italics:
|
706
|
-
bolditalics:
|
941
|
+
var import_zod10 = require("zod");
|
942
|
+
var FontFamily = import_zod10.z.object({
|
943
|
+
normal: import_zod10.z.string(),
|
944
|
+
bold: import_zod10.z.string(),
|
945
|
+
italics: import_zod10.z.string(),
|
946
|
+
bolditalics: import_zod10.z.string()
|
707
947
|
});
|
708
|
-
var CertificateConfig =
|
709
|
-
id:
|
710
|
-
event:
|
948
|
+
var CertificateConfig = import_zod10.z.object({
|
949
|
+
id: import_zod10.z.string(),
|
950
|
+
event: import_zod10.z.string(),
|
711
951
|
label: TranslationConfig,
|
712
|
-
isDefault:
|
713
|
-
fee:
|
714
|
-
onTime:
|
715
|
-
late:
|
716
|
-
delayed:
|
952
|
+
isDefault: import_zod10.z.boolean(),
|
953
|
+
fee: import_zod10.z.object({
|
954
|
+
onTime: import_zod10.z.number(),
|
955
|
+
late: import_zod10.z.number(),
|
956
|
+
delayed: import_zod10.z.number()
|
717
957
|
}),
|
718
|
-
svgUrl:
|
719
|
-
fonts:
|
958
|
+
svgUrl: import_zod10.z.string(),
|
959
|
+
fonts: import_zod10.z.record(FontFamily).optional()
|
720
960
|
});
|
721
961
|
var CertificateTemplateConfig = CertificateConfig.extend({
|
722
|
-
hash:
|
723
|
-
svg:
|
962
|
+
hash: import_zod10.z.string().optional(),
|
963
|
+
svg: import_zod10.z.string()
|
724
964
|
});
|
725
965
|
|
726
966
|
// ../commons/src/events/offline/LanguageConfig.ts
|
727
|
-
var
|
728
|
-
var LanguageConfig =
|
729
|
-
lang:
|
967
|
+
var import_zod11 = require("zod");
|
968
|
+
var LanguageConfig = import_zod11.z.object({
|
969
|
+
lang: import_zod11.z.string(),
|
730
970
|
/**
|
731
971
|
* client.csv contents
|
732
972
|
*/
|
733
|
-
messages:
|
973
|
+
messages: import_zod11.z.record(import_zod11.z.string())
|
734
974
|
});
|
735
975
|
|
736
976
|
// ../commons/src/events/EventConfig.ts
|
737
|
-
var
|
977
|
+
var import_zod16 = require("zod");
|
738
978
|
|
739
979
|
// ../commons/src/events/DeduplicationConfig.ts
|
740
|
-
var
|
741
|
-
var
|
742
|
-
|
743
|
-
|
744
|
-
|
745
|
-
|
980
|
+
var import_zod12 = require("zod");
|
981
|
+
var import_zod_openapi2 = require("zod-openapi");
|
982
|
+
(0, import_zod_openapi2.extendZodWithOpenApi)(import_zod12.z);
|
983
|
+
var FieldReference = import_zod12.z.string();
|
984
|
+
var Matcher = import_zod12.z.object({
|
985
|
+
fieldId: import_zod12.z.string(),
|
986
|
+
options: import_zod12.z.object({
|
987
|
+
boost: import_zod12.z.number().optional()
|
746
988
|
}).optional().default({})
|
747
989
|
});
|
748
990
|
var FuzzyMatcher = Matcher.extend({
|
749
|
-
type:
|
750
|
-
options:
|
991
|
+
type: import_zod12.z.literal("fuzzy"),
|
992
|
+
options: import_zod12.z.object({
|
751
993
|
/**
|
752
994
|
* Names of length 3 or less characters = 0 edits allowed
|
753
995
|
* Names of length 4 - 6 characters = 1 edit allowed
|
754
996
|
* Names of length >7 characters = 2 edits allowed
|
755
997
|
*/
|
756
|
-
fuzziness:
|
757
|
-
boost:
|
998
|
+
fuzziness: import_zod12.z.union([import_zod12.z.string(), import_zod12.z.number()]).optional().default("AUTO:4,7"),
|
999
|
+
boost: import_zod12.z.number().optional().default(1)
|
758
1000
|
}).optional().default({})
|
759
1001
|
});
|
760
1002
|
var StrictMatcher = Matcher.extend({
|
761
|
-
type:
|
762
|
-
options:
|
763
|
-
boost:
|
1003
|
+
type: import_zod12.z.literal("strict"),
|
1004
|
+
options: import_zod12.z.object({
|
1005
|
+
boost: import_zod12.z.number().optional().default(1)
|
764
1006
|
}).optional().default({})
|
765
1007
|
});
|
766
1008
|
var DateRangeMatcher = Matcher.extend({
|
767
|
-
type:
|
768
|
-
options:
|
769
|
-
days:
|
1009
|
+
type: import_zod12.z.literal("dateRange"),
|
1010
|
+
options: import_zod12.z.object({
|
1011
|
+
days: import_zod12.z.number(),
|
770
1012
|
origin: FieldReference,
|
771
|
-
boost:
|
1013
|
+
boost: import_zod12.z.number().optional().default(1)
|
772
1014
|
})
|
773
1015
|
});
|
774
1016
|
var DateDistanceMatcher = Matcher.extend({
|
775
|
-
type:
|
776
|
-
options:
|
777
|
-
days:
|
1017
|
+
type: import_zod12.z.literal("dateDistance"),
|
1018
|
+
options: import_zod12.z.object({
|
1019
|
+
days: import_zod12.z.number(),
|
778
1020
|
origin: FieldReference,
|
779
|
-
boost:
|
1021
|
+
boost: import_zod12.z.number().optional().default(1)
|
780
1022
|
})
|
781
1023
|
});
|
782
|
-
var And =
|
783
|
-
type:
|
784
|
-
|
1024
|
+
var And = import_zod12.z.object({
|
1025
|
+
type: import_zod12.z.literal("and"),
|
1026
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
1027
|
+
clauses: import_zod12.z.lazy(() => Clause.array())
|
785
1028
|
});
|
786
|
-
var Or =
|
787
|
-
type:
|
788
|
-
|
1029
|
+
var Or = import_zod12.z.object({
|
1030
|
+
type: import_zod12.z.literal("or"),
|
1031
|
+
// eslint-disable-next-line @typescript-eslint/no-use-before-define
|
1032
|
+
clauses: import_zod12.z.lazy(() => Clause.array())
|
789
1033
|
});
|
790
|
-
var Clause =
|
791
|
-
() =>
|
1034
|
+
var Clause = import_zod12.z.lazy(
|
1035
|
+
() => import_zod12.z.discriminatedUnion("type", [
|
792
1036
|
And,
|
793
1037
|
Or,
|
794
1038
|
FuzzyMatcher,
|
@@ -796,275 +1040,73 @@ var Clause = import_zod10.z.lazy(
|
|
796
1040
|
DateRangeMatcher,
|
797
1041
|
DateDistanceMatcher
|
798
1042
|
])
|
799
|
-
)
|
800
|
-
|
801
|
-
|
1043
|
+
).openapi({
|
1044
|
+
ref: "Clause"
|
1045
|
+
});
|
1046
|
+
var DeduplicationConfig = import_zod12.z.object({
|
1047
|
+
id: import_zod12.z.string(),
|
802
1048
|
label: TranslationConfig,
|
803
1049
|
query: Clause
|
804
1050
|
});
|
805
1051
|
|
806
1052
|
// ../commons/src/events/SummaryConfig.ts
|
807
|
-
var
|
808
|
-
var
|
809
|
-
|
1053
|
+
var import_zod13 = require("zod");
|
1054
|
+
var BaseField2 = import_zod13.z.object({
|
1055
|
+
emptyValueMessage: TranslationConfig.optional(),
|
1056
|
+
conditionals: import_zod13.z.array(ShowConditional).default([]).optional()
|
1057
|
+
});
|
1058
|
+
var ReferenceField = BaseField2.extend({
|
1059
|
+
fieldId: import_zod13.z.string()
|
1060
|
+
}).describe("Field directly referencing event data with field id");
|
1061
|
+
var Field = BaseField2.extend({
|
1062
|
+
id: import_zod13.z.string().describe("Id of summary field"),
|
810
1063
|
value: TranslationConfig.describe(
|
811
1064
|
"Summary field value. Can utilise values defined in configuration and EventMetadata"
|
812
1065
|
),
|
813
1066
|
label: TranslationConfig,
|
814
1067
|
emptyValueMessage: TranslationConfig.optional()
|
815
|
-
});
|
816
|
-
var
|
817
|
-
|
818
|
-
label: TranslationConfig.describe("Title content"),
|
819
|
-
emptyValueMessage: TranslationConfig.optional()
|
820
|
-
});
|
821
|
-
var SummaryConfig = import_zod11.z.object({
|
822
|
-
title: Title.describe("Title of summary view."),
|
823
|
-
fields: import_zod11.z.array(Field).describe("Fields rendered in summary view.")
|
1068
|
+
}).describe("Custom configured field");
|
1069
|
+
var SummaryConfig = import_zod13.z.object({
|
1070
|
+
fields: import_zod13.z.array(import_zod13.z.union([Field, ReferenceField])).describe("Fields rendered in summary view.")
|
824
1071
|
}).describe("Configuration for summary in event.");
|
825
1072
|
|
826
|
-
// ../commons/src/events/WorkqueueConfig.ts
|
827
|
-
var import_zod13 = require("zod");
|
828
|
-
|
829
|
-
// ../commons/src/events/EventMetadata.ts
|
830
|
-
var import_zod12 = require("zod");
|
831
|
-
var EventStatus = {
|
832
|
-
CREATED: "CREATED",
|
833
|
-
NOTIFIED: "NOTIFIED",
|
834
|
-
DECLARED: "DECLARED",
|
835
|
-
VALIDATED: "VALIDATED",
|
836
|
-
REGISTERED: "REGISTERED",
|
837
|
-
CERTIFIED: "CERTIFIED",
|
838
|
-
REJECTED: "REJECTED",
|
839
|
-
ARCHIVED: "ARCHIVED"
|
840
|
-
};
|
841
|
-
var eventStatuses = Object.values(EventStatus);
|
842
|
-
var EventStatuses = import_zod12.z.nativeEnum(EventStatus);
|
843
|
-
var EventMetadata = import_zod12.z.object({
|
844
|
-
id: import_zod12.z.string(),
|
845
|
-
type: import_zod12.z.string(),
|
846
|
-
status: EventStatuses,
|
847
|
-
createdAt: import_zod12.z.string().datetime(),
|
848
|
-
createdBy: import_zod12.z.string(),
|
849
|
-
createdAtLocation: import_zod12.z.string(),
|
850
|
-
modifiedAt: import_zod12.z.string().datetime(),
|
851
|
-
assignedTo: import_zod12.z.string().nullish(),
|
852
|
-
updatedBy: import_zod12.z.string(),
|
853
|
-
trackingId: import_zod12.z.string()
|
854
|
-
});
|
855
|
-
var eventMetadataLabelMap = {
|
856
|
-
"event.assignedTo": {
|
857
|
-
id: "event.assignedTo.label",
|
858
|
-
defaultMessage: "Assigned To",
|
859
|
-
description: "Assigned To"
|
860
|
-
},
|
861
|
-
"event.createdAt": {
|
862
|
-
id: "event.createdAt.label",
|
863
|
-
defaultMessage: "Created",
|
864
|
-
description: "Created At"
|
865
|
-
},
|
866
|
-
"event.createdAtLocation": {
|
867
|
-
id: "event.createdAtLocation.label",
|
868
|
-
defaultMessage: "Location",
|
869
|
-
description: "Created At Location"
|
870
|
-
},
|
871
|
-
"event.createdBy": {
|
872
|
-
id: "event.createdBy.label",
|
873
|
-
defaultMessage: "Created By",
|
874
|
-
description: "Created By"
|
875
|
-
},
|
876
|
-
"event.id": {
|
877
|
-
id: "event.id.label",
|
878
|
-
defaultMessage: "ID",
|
879
|
-
description: "ID"
|
880
|
-
},
|
881
|
-
"event.modifiedAt": {
|
882
|
-
id: "event.modifiedAt.label",
|
883
|
-
defaultMessage: "Updated",
|
884
|
-
description: "Modified At"
|
885
|
-
},
|
886
|
-
"event.status": {
|
887
|
-
id: "event.status.label",
|
888
|
-
defaultMessage: "Status",
|
889
|
-
description: "Status"
|
890
|
-
},
|
891
|
-
"event.type": {
|
892
|
-
id: "event.type.label",
|
893
|
-
defaultMessage: "Type",
|
894
|
-
description: "Type"
|
895
|
-
},
|
896
|
-
"event.updatedBy": {
|
897
|
-
id: "event.updatedBy.label",
|
898
|
-
defaultMessage: "Updated By",
|
899
|
-
description: "Updated By"
|
900
|
-
},
|
901
|
-
"event.trackingId": {
|
902
|
-
id: "event.trackingId.label",
|
903
|
-
defaultMessage: "Tracking ID",
|
904
|
-
description: "Tracking ID"
|
905
|
-
}
|
906
|
-
};
|
907
|
-
|
908
|
-
// ../commons/src/events/WorkqueueConfig.ts
|
909
|
-
var WorkqueueConfig = import_zod13.z.object({
|
910
|
-
id: import_zod13.z.string().describe("Unique identifier for workqueue."),
|
911
|
-
filters: import_zod13.z.array(
|
912
|
-
import_zod13.z.object({
|
913
|
-
status: import_zod13.z.array(EventStatuses).describe("Defines which statusese are included in the workqueue.")
|
914
|
-
})
|
915
|
-
).describe("Filters to be applied to workqueue.")
|
916
|
-
}).describe("Configuration for workqueue.");
|
917
|
-
|
918
1073
|
// ../commons/src/events/AdvancedSearchConfig.ts
|
919
1074
|
var import_zod14 = require("zod");
|
1075
|
+
var MatchType = import_zod14.z.enum(["FUZZY", "EXACT", "RANGE", "ANY_OF"]);
|
1076
|
+
var BaseField3 = import_zod14.z.object({
|
1077
|
+
config: import_zod14.z.object({
|
1078
|
+
type: MatchType.describe("Determines the type of field")
|
1079
|
+
}),
|
1080
|
+
options: import_zod14.z.array(SelectOption).optional()
|
1081
|
+
});
|
1082
|
+
var FieldConfigSchema = BaseField3.extend({
|
1083
|
+
fieldId: import_zod14.z.string(),
|
1084
|
+
fieldType: import_zod14.z.literal("field")
|
1085
|
+
});
|
1086
|
+
var EventFieldId = import_zod14.z.enum(["trackingId", "status"]);
|
1087
|
+
var EventFieldConfigSchema = BaseField3.extend({
|
1088
|
+
fieldId: EventFieldId,
|
1089
|
+
fieldType: import_zod14.z.literal("event")
|
1090
|
+
});
|
1091
|
+
var SearchField = import_zod14.z.discriminatedUnion("fieldType", [
|
1092
|
+
FieldConfigSchema,
|
1093
|
+
EventFieldConfigSchema
|
1094
|
+
]);
|
920
1095
|
var AdvancedSearchConfig = import_zod14.z.object({
|
921
1096
|
title: TranslationConfig.describe("Advanced search tab title"),
|
922
|
-
fields: import_zod14.z.array(
|
923
|
-
import_zod14.z.object({
|
924
|
-
fieldId: import_zod14.z.string(),
|
925
|
-
config: import_zod14.z.object({
|
926
|
-
type: import_zod14.z.enum(["FUZZY", "EXACT", "RANGE"]).describe("Determines the type of field")
|
927
|
-
}).optional().describe("Configuration options for the field")
|
928
|
-
})
|
929
|
-
).optional().default([]).describe("Advanced search fields.")
|
1097
|
+
fields: import_zod14.z.array(SearchField).describe("Advanced search fields.")
|
930
1098
|
});
|
931
1099
|
|
932
1100
|
// ../commons/src/events/utils.ts
|
933
1101
|
var import_lodash = require("lodash");
|
934
1102
|
|
935
|
-
// ../commons/src/workqueues/WorkqueueConfig.ts
|
936
|
-
var import_zod16 = require("zod");
|
937
|
-
|
938
|
-
// ../commons/src/workqueues/defaultColumns.ts
|
939
|
-
var import_zod15 = require("zod");
|
940
|
-
var WorkQueueColumnConfig = import_zod15.z.object({
|
941
|
-
id: import_zod15.z.string(),
|
942
|
-
label: TranslationConfig
|
943
|
-
});
|
944
|
-
var defaultColumns = {
|
945
|
-
event: {
|
946
|
-
id: "event",
|
947
|
-
label: {
|
948
|
-
defaultMessage: "Event",
|
949
|
-
description: "This is the label for the workqueue column",
|
950
|
-
id: "workqueue.default.column.event"
|
951
|
-
}
|
952
|
-
},
|
953
|
-
status: {
|
954
|
-
id: "status",
|
955
|
-
label: {
|
956
|
-
defaultMessage: "Status",
|
957
|
-
description: "This is the label for the workqueue column",
|
958
|
-
id: "workqueue.default.column.status"
|
959
|
-
}
|
960
|
-
},
|
961
|
-
createdAt: {
|
962
|
-
id: "createdAt",
|
963
|
-
label: {
|
964
|
-
defaultMessage: "Created",
|
965
|
-
description: "This is the label for the workqueue column",
|
966
|
-
id: "workqueue.default.column.createdAt"
|
967
|
-
}
|
968
|
-
},
|
969
|
-
modifiedAt: {
|
970
|
-
id: "modifiedAt",
|
971
|
-
label: {
|
972
|
-
defaultMessage: "Modified",
|
973
|
-
description: "This is the label for the workqueue column",
|
974
|
-
id: "workqueue.default.column.modifiedAt"
|
975
|
-
}
|
976
|
-
}
|
977
|
-
};
|
978
|
-
var DefaultColumnKeys = import_zod15.z.enum(
|
979
|
-
Object.keys(defaultColumns)
|
980
|
-
);
|
981
|
-
|
982
|
-
// ../commons/src/workqueues/WorkqueueConfig.ts
|
983
|
-
var rootWorkqueueConfig = import_zod16.z.object({
|
984
|
-
id: import_zod16.z.string(),
|
985
|
-
title: TranslationConfig,
|
986
|
-
columns: import_zod16.z.array(WorkQueueColumnConfig),
|
987
|
-
defaultColumns: import_zod16.z.array(DefaultColumnKeys)
|
988
|
-
});
|
989
|
-
var defineWorkqueue = (config) => rootWorkqueueConfig.parse(config);
|
990
|
-
|
991
|
-
// ../commons/src/workqueues/all.ts
|
992
|
-
var allWorkqueue = defineWorkqueue({
|
993
|
-
id: "all",
|
994
|
-
title: {
|
995
|
-
defaultMessage: "All events",
|
996
|
-
description: "This is the label for the workqueue",
|
997
|
-
id: "workqueue.all.label"
|
998
|
-
},
|
999
|
-
columns: [
|
1000
|
-
{
|
1001
|
-
id: "title",
|
1002
|
-
label: {
|
1003
|
-
defaultMessage: "Title",
|
1004
|
-
description: "This is the label for the workqueue column",
|
1005
|
-
id: "workqueue.all.column.title"
|
1006
|
-
}
|
1007
|
-
}
|
1008
|
-
],
|
1009
|
-
defaultColumns: ["event", "status", "createdAt", "modifiedAt"]
|
1010
|
-
});
|
1011
|
-
|
1012
|
-
// ../commons/src/workqueues/readyForReview.ts
|
1013
|
-
var inReviewWorkqueue = defineWorkqueue({
|
1014
|
-
id: "ready-for-review",
|
1015
|
-
title: {
|
1016
|
-
defaultMessage: "Ready for review",
|
1017
|
-
description: "Label for in review workqueue",
|
1018
|
-
id: "event.workqueue.in-review.label"
|
1019
|
-
},
|
1020
|
-
columns: [
|
1021
|
-
{
|
1022
|
-
id: "title",
|
1023
|
-
label: {
|
1024
|
-
defaultMessage: "Title",
|
1025
|
-
description: "This is the label for the workqueue column",
|
1026
|
-
id: "workqueue.in-reveiw.column.title"
|
1027
|
-
}
|
1028
|
-
}
|
1029
|
-
],
|
1030
|
-
defaultColumns: ["event", "createdAt", "modifiedAt"]
|
1031
|
-
});
|
1032
|
-
|
1033
|
-
// ../commons/src/workqueues/readyToPrint.ts
|
1034
|
-
var registeredWorkqueue = defineWorkqueue({
|
1035
|
-
id: "registered",
|
1036
|
-
title: {
|
1037
|
-
defaultMessage: "Ready to print",
|
1038
|
-
description: "Label for registered workqueue",
|
1039
|
-
id: "event.workqueue.registered.label"
|
1040
|
-
},
|
1041
|
-
columns: [
|
1042
|
-
{
|
1043
|
-
id: "title",
|
1044
|
-
label: {
|
1045
|
-
defaultMessage: "Title",
|
1046
|
-
description: "This is the label for the workqueue column",
|
1047
|
-
id: "workqueue.registered.column.title"
|
1048
|
-
}
|
1049
|
-
}
|
1050
|
-
],
|
1051
|
-
defaultColumns: ["event", "createdAt", "modifiedAt"]
|
1052
|
-
});
|
1053
|
-
|
1054
|
-
// ../commons/src/workqueues/index.ts
|
1055
|
-
var workqueues = {
|
1056
|
-
all: allWorkqueue,
|
1057
|
-
registered: registeredWorkqueue,
|
1058
|
-
inReview: inReviewWorkqueue
|
1059
|
-
};
|
1060
|
-
|
1061
1103
|
// ../commons/src/conditionals/validate.ts
|
1062
1104
|
var import_ajv = __toESM(require("ajv"));
|
1063
1105
|
var import_ajv_formats = __toESM(require("ajv-formats"));
|
1064
1106
|
var import_date_fns = require("date-fns");
|
1065
1107
|
|
1066
1108
|
// ../commons/src/events/FieldTypeMapping.ts
|
1067
|
-
var
|
1109
|
+
var import_zod15 = require("zod");
|
1068
1110
|
function mapFieldTypeToZod(type, required) {
|
1069
1111
|
let schema;
|
1070
1112
|
switch (type) {
|
@@ -1088,8 +1130,7 @@ function mapFieldTypeToZod(type, required) {
|
|
1088
1130
|
case FieldType.FACILITY:
|
1089
1131
|
case FieldType.OFFICE:
|
1090
1132
|
case FieldType.SIGNATURE:
|
1091
|
-
|
1092
|
-
schema = required ? RequiredTextValue : TextValue;
|
1133
|
+
schema = required ? NonEmptyTextValue : TextValue;
|
1093
1134
|
break;
|
1094
1135
|
case FieldType.NUMBER:
|
1095
1136
|
schema = NumberFieldValue;
|
@@ -1106,6 +1147,9 @@ function mapFieldTypeToZod(type, required) {
|
|
1106
1147
|
case FieldType.ADDRESS:
|
1107
1148
|
schema = AddressFieldUpdateValue;
|
1108
1149
|
break;
|
1150
|
+
case FieldType.DATA:
|
1151
|
+
schema = DataFieldValue;
|
1152
|
+
break;
|
1109
1153
|
}
|
1110
1154
|
return required ? schema : schema.nullish();
|
1111
1155
|
}
|
@@ -1114,7 +1158,7 @@ function createValidationSchema(config) {
|
|
1114
1158
|
for (const field2 of config) {
|
1115
1159
|
shape[field2.id] = mapFieldTypeToZod(field2.type, field2.required);
|
1116
1160
|
}
|
1117
|
-
return
|
1161
|
+
return import_zod15.z.object(shape);
|
1118
1162
|
}
|
1119
1163
|
function mapFieldTypeToMockValue(field2, i) {
|
1120
1164
|
switch (field2.type) {
|
@@ -1140,6 +1184,7 @@ function mapFieldTypeToMockValue(field2, i) {
|
|
1140
1184
|
case FieldType.ADDRESS:
|
1141
1185
|
return {
|
1142
1186
|
country: "FAR",
|
1187
|
+
addressType: AddressType.DOMESTIC,
|
1143
1188
|
province: "a45b982a-5c7b-4bd9-8fd8-a42d0994054c",
|
1144
1189
|
district: "5ef450bc-712d-48ad-93f3-8da0fa453baa",
|
1145
1190
|
urbanOrRural: "URBAN",
|
@@ -1161,25 +1206,73 @@ function mapFieldTypeToMockValue(field2, i) {
|
|
1161
1206
|
};
|
1162
1207
|
case FieldType.FILE_WITH_OPTIONS:
|
1163
1208
|
return null;
|
1209
|
+
case FieldType.DATA:
|
1210
|
+
return {};
|
1164
1211
|
}
|
1165
1212
|
}
|
1166
|
-
|
1167
|
-
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
|
1172
|
-
|
1173
|
-
|
1174
|
-
|
1175
|
-
|
1176
|
-
|
1177
|
-
|
1178
|
-
|
1179
|
-
|
1180
|
-
|
1181
|
-
|
1182
|
-
|
1213
|
+
function mapFieldTypeToEmptyValue(field2) {
|
1214
|
+
switch (field2.type) {
|
1215
|
+
case FieldType.DIVIDER:
|
1216
|
+
case FieldType.TEXT:
|
1217
|
+
case FieldType.TEXTAREA:
|
1218
|
+
case FieldType.BULLET_LIST:
|
1219
|
+
case FieldType.PAGE_HEADER:
|
1220
|
+
case FieldType.LOCATION:
|
1221
|
+
case FieldType.SELECT:
|
1222
|
+
case FieldType.COUNTRY:
|
1223
|
+
case FieldType.RADIO_GROUP:
|
1224
|
+
case FieldType.SIGNATURE:
|
1225
|
+
case FieldType.PARAGRAPH:
|
1226
|
+
case FieldType.ADMINISTRATIVE_AREA:
|
1227
|
+
case FieldType.FACILITY:
|
1228
|
+
case FieldType.OFFICE:
|
1229
|
+
case FieldType.NUMBER:
|
1230
|
+
case FieldType.EMAIL:
|
1231
|
+
case FieldType.DATE:
|
1232
|
+
case FieldType.CHECKBOX:
|
1233
|
+
case FieldType.DATA:
|
1234
|
+
return null;
|
1235
|
+
case FieldType.ADDRESS:
|
1236
|
+
return {
|
1237
|
+
country: null,
|
1238
|
+
addressType: AddressType.DOMESTIC,
|
1239
|
+
province: null,
|
1240
|
+
district: null,
|
1241
|
+
urbanOrRural: "URBAN",
|
1242
|
+
// Default to urban needed for validation
|
1243
|
+
town: null,
|
1244
|
+
residentialArea: null,
|
1245
|
+
street: null,
|
1246
|
+
number: null,
|
1247
|
+
zipCode: null
|
1248
|
+
};
|
1249
|
+
case FieldType.FILE:
|
1250
|
+
return {
|
1251
|
+
filename: "",
|
1252
|
+
originalFilename: "",
|
1253
|
+
type: ""
|
1254
|
+
};
|
1255
|
+
case FieldType.FILE_WITH_OPTIONS:
|
1256
|
+
return [];
|
1257
|
+
}
|
1258
|
+
}
|
1259
|
+
var isParagraphFieldType = (field2) => {
|
1260
|
+
return field2.config.type === FieldType.PARAGRAPH;
|
1261
|
+
};
|
1262
|
+
var isDateFieldType = (field2) => {
|
1263
|
+
return field2.config.type === FieldType.DATE;
|
1264
|
+
};
|
1265
|
+
var isPageHeaderFieldType = (field2) => {
|
1266
|
+
return field2.config.type === FieldType.PAGE_HEADER;
|
1267
|
+
};
|
1268
|
+
var isTextFieldType = (field2) => {
|
1269
|
+
return field2.config.type === FieldType.TEXT;
|
1270
|
+
};
|
1271
|
+
var isNumberFieldType = (field2) => {
|
1272
|
+
return field2.config.type === FieldType.NUMBER;
|
1273
|
+
};
|
1274
|
+
var isTextAreaFieldType = (field2) => {
|
1275
|
+
return field2.config.type === FieldType.TEXTAREA;
|
1183
1276
|
};
|
1184
1277
|
var isSignatureFieldType = (field2) => {
|
1185
1278
|
return field2.config.type === FieldType.SIGNATURE;
|
@@ -1226,21 +1319,36 @@ var isFacilityFieldType = (field2) => {
|
|
1226
1319
|
var isOfficeFieldType = (field2) => {
|
1227
1320
|
return field2.config.type === FieldType.OFFICE;
|
1228
1321
|
};
|
1322
|
+
var isDataFieldType = (field2) => {
|
1323
|
+
return field2.config.type === FieldType.DATA;
|
1324
|
+
};
|
1229
1325
|
|
1230
1326
|
// ../commons/src/conditionals/validate.ts
|
1231
1327
|
var ajv = new import_ajv.default({
|
1232
|
-
$data: true
|
1328
|
+
$data: true,
|
1329
|
+
allowUnionTypes: true
|
1233
1330
|
});
|
1234
1331
|
(0, import_ajv_formats.default)(ajv);
|
1235
1332
|
function validate(schema, data) {
|
1236
1333
|
return ajv.validate(schema, data);
|
1237
1334
|
}
|
1335
|
+
function isConditionMet(conditional, values) {
|
1336
|
+
return validate(conditional, {
|
1337
|
+
$form: values,
|
1338
|
+
$now: (0, import_date_fns.formatISO)(/* @__PURE__ */ new Date(), { representation: "date" })
|
1339
|
+
});
|
1340
|
+
}
|
1238
1341
|
function getConditionalActionsForField(field2, values) {
|
1239
1342
|
if (!field2.conditionals) {
|
1240
1343
|
return [];
|
1241
1344
|
}
|
1242
1345
|
return field2.conditionals.filter((conditional) => validate(conditional.conditional, values)).map((conditional) => conditional.type);
|
1243
1346
|
}
|
1347
|
+
function areConditionsMet(conditions, values) {
|
1348
|
+
return conditions.every(
|
1349
|
+
(condition) => isConditionMet(condition.conditional, values)
|
1350
|
+
);
|
1351
|
+
}
|
1244
1352
|
function isFieldConditionMet(field2, form, conditionalType) {
|
1245
1353
|
const hasRule = (field2.conditionals ?? []).some(
|
1246
1354
|
(conditional) => conditional.type === conditionalType
|
@@ -1259,91 +1367,88 @@ function isFieldConditionMet(field2, form, conditionalType) {
|
|
1259
1367
|
function isFieldVisible(field2, form) {
|
1260
1368
|
return isFieldConditionMet(field2, form, ConditionalType.SHOW);
|
1261
1369
|
}
|
1370
|
+
function isFieldEmptyAndNotRequired(field2, form) {
|
1371
|
+
const fieldValue = form[field2.id];
|
1372
|
+
return !field2.required && (fieldValue === void 0 || fieldValue === "");
|
1373
|
+
}
|
1262
1374
|
function isFieldEnabled(field2, form) {
|
1263
1375
|
return isFieldConditionMet(field2, form, ConditionalType.ENABLE);
|
1264
1376
|
}
|
1265
|
-
|
1266
|
-
|
1267
|
-
|
1268
|
-
|
1269
|
-
|
1270
|
-
|
1271
|
-
|
1272
|
-
|
1273
|
-
|
1274
|
-
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
|
1280
|
-
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
|
1286
|
-
|
1287
|
-
|
1288
|
-
|
1289
|
-
|
1290
|
-
|
1291
|
-
|
1292
|
-
|
1293
|
-
description: "This is the error message for required fields",
|
1294
|
-
id: "v2.error.required"
|
1295
|
-
}
|
1296
|
-
}
|
1297
|
-
};
|
1377
|
+
function isFieldDisplayedOnReview(field2, form) {
|
1378
|
+
return isFieldVisible(field2, form) && isFieldConditionMet(field2, form, ConditionalType.DISPLAY_ON_REVIEW);
|
1379
|
+
}
|
1380
|
+
var errorMessages = {
|
1381
|
+
hiddenField: {
|
1382
|
+
id: "v2.error.hidden",
|
1383
|
+
defaultMessage: "Hidden or disabled field should not receive a value",
|
1384
|
+
description: "Error message when field is hidden or disabled, but a value was received"
|
1385
|
+
},
|
1386
|
+
invalidDate: {
|
1387
|
+
defaultMessage: "Invalid date field",
|
1388
|
+
description: "Error message when date field is invalid",
|
1389
|
+
id: "v2.error.invalidDate"
|
1390
|
+
},
|
1391
|
+
invalidEmail: {
|
1392
|
+
defaultMessage: "Invalid email address",
|
1393
|
+
description: "Error message when email address is invalid",
|
1394
|
+
id: "v2.error.invalidEmail"
|
1395
|
+
},
|
1396
|
+
requiredField: {
|
1397
|
+
defaultMessage: "Required for registration",
|
1398
|
+
description: "Error message when required field is missing",
|
1399
|
+
id: "v2.error.required"
|
1400
|
+
},
|
1401
|
+
invalidInput: {
|
1402
|
+
defaultMessage: "Invalid input",
|
1403
|
+
description: "Error message when generic field is invalid",
|
1404
|
+
id: "v2.error.invalid"
|
1298
1405
|
}
|
1406
|
+
};
|
1407
|
+
function createIntlError(message) {
|
1299
1408
|
return {
|
1300
1409
|
message: {
|
1301
|
-
message
|
1302
|
-
defaultMessage: "Invalid input",
|
1303
|
-
description: "This is the error message for invalid field value",
|
1304
|
-
id: "v2.error.invalid"
|
1305
|
-
}
|
1410
|
+
message
|
1306
1411
|
}
|
1307
1412
|
};
|
1308
|
-
}
|
1309
|
-
function
|
1310
|
-
|
1311
|
-
|
1312
|
-
|
1313
|
-
|
1314
|
-
|
1315
|
-
|
1316
|
-
|
1317
|
-
|
1318
|
-
|
1319
|
-
|
1320
|
-
|
1321
|
-
|
1322
|
-
|
1323
|
-
|
1324
|
-
|
1325
|
-
|
1326
|
-
|
1413
|
+
}
|
1414
|
+
function zodToIntlErrorMap(issue, _ctx) {
|
1415
|
+
switch (issue.code) {
|
1416
|
+
case "invalid_string": {
|
1417
|
+
if (_ctx.data === "") {
|
1418
|
+
return createIntlError(errorMessages.requiredField);
|
1419
|
+
}
|
1420
|
+
if (issue.validation === "date") {
|
1421
|
+
return createIntlError(errorMessages.invalidDate);
|
1422
|
+
}
|
1423
|
+
if (issue.validation === "email") {
|
1424
|
+
return createIntlError(errorMessages.invalidEmail);
|
1425
|
+
}
|
1426
|
+
break;
|
1427
|
+
}
|
1428
|
+
case "invalid_type": {
|
1429
|
+
if (issue.expected !== issue.received && issue.received === "undefined") {
|
1430
|
+
return createIntlError(errorMessages.requiredField);
|
1431
|
+
}
|
1432
|
+
break;
|
1433
|
+
}
|
1434
|
+
case "too_small": {
|
1435
|
+
if (issue.message === void 0) {
|
1436
|
+
return createIntlError(errorMessages.requiredField);
|
1437
|
+
}
|
1438
|
+
break;
|
1439
|
+
}
|
1440
|
+
case "invalid_union": {
|
1441
|
+
for (const { issues } of issue.unionErrors) {
|
1442
|
+
for (const e of issues) {
|
1443
|
+
if (zodToIntlErrorMap(e, _ctx).message.message.id !== "v2.error.required") {
|
1444
|
+
return createIntlError(errorMessages.invalidInput);
|
1327
1445
|
}
|
1328
|
-
|
1329
|
-
}
|
1446
|
+
}
|
1447
|
+
}
|
1448
|
+
return createIntlError(errorMessages.requiredField);
|
1330
1449
|
}
|
1331
|
-
return {
|
1332
|
-
errors: []
|
1333
|
-
};
|
1334
1450
|
}
|
1335
|
-
|
1336
|
-
field: field2,
|
1337
|
-
value: values[field2.id]
|
1338
|
-
});
|
1339
|
-
const customValidationResults = runCustomFieldValidations({
|
1340
|
-
field: field2,
|
1341
|
-
conditionalParameters
|
1342
|
-
});
|
1343
|
-
return {
|
1344
|
-
// Assumes that custom validation errors are more important than field validation errors
|
1345
|
-
errors: [...customValidationResults, ...fieldValidationResult]
|
1346
|
-
};
|
1451
|
+
return createIntlError(errorMessages.invalidInput);
|
1347
1452
|
}
|
1348
1453
|
function runCustomFieldValidations({
|
1349
1454
|
field: field2,
|
@@ -1366,149 +1471,232 @@ function validateFieldInput({
|
|
1366
1471
|
);
|
1367
1472
|
return rawError.error?.issues.map((issue) => issue.message) ?? [];
|
1368
1473
|
}
|
1369
|
-
|
1370
|
-
|
1371
|
-
|
1372
|
-
|
1373
|
-
|
1374
|
-
var findInputPageFields = (config) => {
|
1375
|
-
return (0, import_lodash.flattenDeep)(
|
1376
|
-
config.actions.map(
|
1377
|
-
({ forms }) => forms.map(
|
1378
|
-
({ pages }) => pages.map(
|
1379
|
-
({ fields }) => fields.map(({ id, label }) => ({ id, label }))
|
1380
|
-
)
|
1381
|
-
)
|
1382
|
-
)
|
1383
|
-
);
|
1384
|
-
};
|
1385
|
-
var findPageFields = (config) => {
|
1386
|
-
return (0, import_lodash.flattenDeep)(
|
1387
|
-
config.actions.map((action) => {
|
1388
|
-
if (action.type === ActionType.REQUEST_CORRECTION) {
|
1389
|
-
return [
|
1390
|
-
...action.forms.map(({ pages }) => pages.map(({ fields }) => fields)),
|
1391
|
-
...action.onboardingForm.flatMap(({ fields }) => fields),
|
1392
|
-
...action.additionalDetailsForm.flatMap(({ fields }) => fields)
|
1393
|
-
];
|
1394
|
-
}
|
1395
|
-
return action.forms.map(({ pages }) => pages.map(({ fields }) => fields));
|
1396
|
-
})
|
1397
|
-
);
|
1398
|
-
};
|
1399
|
-
var resolveLabelsFromKnownFields = ({
|
1400
|
-
pageFields,
|
1401
|
-
refFields
|
1402
|
-
}) => {
|
1403
|
-
return refFields.map((field2) => {
|
1404
|
-
if (field2.label) {
|
1405
|
-
return field2;
|
1406
|
-
}
|
1407
|
-
if (isMetadataField(field2.id)) {
|
1408
|
-
return {
|
1409
|
-
...field2,
|
1410
|
-
label: eventMetadataLabelMap[field2.id]
|
1411
|
-
};
|
1412
|
-
}
|
1413
|
-
const pageLabel = pageFields.find((pageField) => pageField.id === field2.id);
|
1414
|
-
if (!pageLabel) {
|
1415
|
-
throw new Error(`Referenced field ${field2.id} does not have a label`);
|
1416
|
-
}
|
1474
|
+
function runFieldValidations({
|
1475
|
+
field: field2,
|
1476
|
+
values
|
1477
|
+
}) {
|
1478
|
+
if (!isFieldVisible(field2, values) || isFieldEmptyAndNotRequired(field2, values)) {
|
1417
1479
|
return {
|
1418
|
-
|
1419
|
-
label: pageLabel.label
|
1480
|
+
errors: []
|
1420
1481
|
};
|
1482
|
+
}
|
1483
|
+
const conditionalParameters = {
|
1484
|
+
$form: values,
|
1485
|
+
$now: (0, import_date_fns.formatISO)(/* @__PURE__ */ new Date(), { representation: "date" })
|
1486
|
+
};
|
1487
|
+
const fieldValidationResult = validateFieldInput({
|
1488
|
+
field: field2,
|
1489
|
+
value: values[field2.id]
|
1421
1490
|
});
|
1422
|
-
|
1423
|
-
|
1424
|
-
|
1425
|
-
|
1426
|
-
|
1427
|
-
|
1491
|
+
const customValidationResults = runCustomFieldValidations({
|
1492
|
+
field: field2,
|
1493
|
+
conditionalParameters
|
1494
|
+
});
|
1495
|
+
return {
|
1496
|
+
// Assumes that custom validation errors are based on the field type, and extend the validation.
|
1497
|
+
errors: [...fieldValidationResult, ...customValidationResults]
|
1498
|
+
};
|
1499
|
+
}
|
1500
|
+
|
1501
|
+
// ../commons/src/uuid.ts
|
1502
|
+
var import_uuid = require("uuid");
|
1503
|
+
function getUUID() {
|
1504
|
+
return (0, import_uuid.v4)();
|
1428
1505
|
}
|
1429
|
-
|
1430
|
-
|
1506
|
+
|
1507
|
+
// ../commons/src/utils.ts
|
1508
|
+
function getOrThrow(x, message) {
|
1509
|
+
if (x === void 0 || x === null) {
|
1510
|
+
throw new Error(message);
|
1511
|
+
}
|
1512
|
+
return x;
|
1431
1513
|
}
|
1432
|
-
|
1433
|
-
|
1434
|
-
|
1435
|
-
|
1436
|
-
);
|
1437
|
-
if (!rootWorkqueue) {
|
1438
|
-
throw new Error(
|
1439
|
-
`Invalid workqueue configuration: workqueue not found with id: ${workqueue.id}`
|
1440
|
-
);
|
1441
|
-
}
|
1442
|
-
});
|
1514
|
+
|
1515
|
+
// ../commons/src/events/utils.ts
|
1516
|
+
function isDeclarationActionConfig(action) {
|
1517
|
+
return DeclarationActions.safeParse(action.type).success;
|
1443
1518
|
}
|
1444
|
-
|
1445
|
-
|
1446
|
-
|
1447
|
-
|
1448
|
-
|
1449
|
-
|
1450
|
-
|
1451
|
-
|
1452
|
-
|
1453
|
-
|
1454
|
-
|
1455
|
-
|
1456
|
-
|
1457
|
-
|
1458
|
-
|
1459
|
-
|
1460
|
-
|
1461
|
-
|
1462
|
-
|
1463
|
-
|
1464
|
-
|
1465
|
-
};
|
1466
|
-
function getActiveActionFields(configuration, action) {
|
1467
|
-
const fields = findActiveActionFields(configuration, action);
|
1468
|
-
if (!fields) {
|
1469
|
-
throw new Error(`No active field config found for action type ${action}`);
|
1519
|
+
function getDeclarationFields(configuration) {
|
1520
|
+
return configuration.declaration.pages.flatMap(({ fields }) => fields);
|
1521
|
+
}
|
1522
|
+
function getDeclarationPages(configuration) {
|
1523
|
+
return configuration.declaration.pages;
|
1524
|
+
}
|
1525
|
+
function getDeclaration(configuration) {
|
1526
|
+
return configuration.declaration;
|
1527
|
+
}
|
1528
|
+
var getActionAnnotationFields = (actionConfig) => {
|
1529
|
+
if (actionConfig.type === ActionType.REQUEST_CORRECTION) {
|
1530
|
+
return [
|
1531
|
+
...actionConfig.onboardingForm.flatMap(({ fields }) => fields),
|
1532
|
+
...actionConfig.additionalDetailsForm.flatMap(({ fields }) => fields)
|
1533
|
+
];
|
1534
|
+
}
|
1535
|
+
if (actionConfig.type === ActionType.PRINT_CERTIFICATE) {
|
1536
|
+
return actionConfig.printForm.pages.flatMap(({ fields }) => fields);
|
1537
|
+
}
|
1538
|
+
if (isDeclarationActionConfig(actionConfig)) {
|
1539
|
+
return actionConfig.review.fields;
|
1470
1540
|
}
|
1471
|
-
return
|
1541
|
+
return [];
|
1542
|
+
};
|
1543
|
+
function getAllAnnotationFields(config) {
|
1544
|
+
return (0, import_lodash.flattenDeep)(config.actions.map(getActionAnnotationFields));
|
1472
1545
|
}
|
1473
|
-
|
1474
|
-
const
|
1475
|
-
if (
|
1476
|
-
|
1546
|
+
var findRecordActionPages = (config, actionType) => {
|
1547
|
+
const action = config.actions.find((a) => a.type === actionType);
|
1548
|
+
if (action?.type === ActionType.REQUEST_CORRECTION) {
|
1549
|
+
return [...action.onboardingForm, ...action.additionalDetailsForm];
|
1550
|
+
}
|
1551
|
+
if (action?.type === ActionType.PRINT_CERTIFICATE) {
|
1552
|
+
return action.printForm.pages;
|
1477
1553
|
}
|
1478
|
-
return
|
1554
|
+
return [];
|
1555
|
+
};
|
1556
|
+
function getActionReview(configuration, actionType) {
|
1557
|
+
const [actionConfig] = configuration.actions.filter(
|
1558
|
+
(a) => a.type === actionType
|
1559
|
+
);
|
1560
|
+
return getOrThrow(
|
1561
|
+
actionConfig.review,
|
1562
|
+
`No review config found for ${actionType}`
|
1563
|
+
);
|
1479
1564
|
}
|
1480
|
-
function
|
1481
|
-
|
1482
|
-
|
1565
|
+
function getActionReviewFields(configuration, actionType) {
|
1566
|
+
return getActionReview(configuration, actionType).fields;
|
1567
|
+
}
|
1568
|
+
function isPageVisible(page, formValues) {
|
1569
|
+
if (!page.conditional) {
|
1570
|
+
return true;
|
1483
1571
|
}
|
1484
|
-
return
|
1572
|
+
return isConditionMet(page.conditional, formValues);
|
1485
1573
|
}
|
1486
|
-
function
|
1487
|
-
return (0, import_lodash.omitBy)(
|
1488
|
-
|
1489
|
-
|
1490
|
-
return true;
|
1574
|
+
function omitHiddenFields(fields, values, visibleVerificationPageIds = []) {
|
1575
|
+
return (0, import_lodash.omitBy)(values, (_, fieldId) => {
|
1576
|
+
if (visibleVerificationPageIds.includes(fieldId)) {
|
1577
|
+
return false;
|
1491
1578
|
}
|
1492
|
-
|
1579
|
+
const fieldConfigs = fields.filter((f) => f.id === fieldId);
|
1580
|
+
if (!fieldConfigs.length) {
|
1493
1581
|
return true;
|
1494
1582
|
}
|
1495
|
-
return !isFieldVisible(
|
1583
|
+
return fieldConfigs.every((f) => !isFieldVisible(f, values));
|
1496
1584
|
});
|
1497
1585
|
}
|
1586
|
+
function omitHiddenPaginatedFields(formConfig, declaration) {
|
1587
|
+
const visiblePagesFormFields = formConfig.pages.filter((p) => isPageVisible(p, declaration)).flatMap((p) => p.fields);
|
1588
|
+
return omitHiddenFields(visiblePagesFormFields, declaration);
|
1589
|
+
}
|
1590
|
+
function findActiveDrafts(event2, drafts) {
|
1591
|
+
const actions = event2.actions.slice().filter(({ type }) => type !== ActionType.READ).sort((a, b) => a.createdAt.localeCompare(b.createdAt));
|
1592
|
+
const lastAction = actions[actions.length - 1];
|
1593
|
+
return drafts.filter(({ createdAt }) => createdAt >= lastAction.createdAt).filter(({ eventId }) => eventId === event2.id);
|
1594
|
+
}
|
1595
|
+
function createEmptyDraft(eventId, draftId, actionType) {
|
1596
|
+
return {
|
1597
|
+
id: draftId,
|
1598
|
+
eventId,
|
1599
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
1600
|
+
transactionId: getUUID(),
|
1601
|
+
action: {
|
1602
|
+
type: actionType,
|
1603
|
+
declaration: {},
|
1604
|
+
annotation: {},
|
1605
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
1606
|
+
createdBy: "@todo",
|
1607
|
+
createdAtLocation: "@todo"
|
1608
|
+
}
|
1609
|
+
};
|
1610
|
+
}
|
1611
|
+
function isVerificationPage(page) {
|
1612
|
+
return page.type === PageTypes.enum.VERIFICATION;
|
1613
|
+
}
|
1614
|
+
function getVisibleVerificationPageIds(pages, annotation) {
|
1615
|
+
return pages.filter((page) => isVerificationPage(page)).filter((page) => isPageVisible(page, annotation)).map((page) => page.id);
|
1616
|
+
}
|
1617
|
+
function getActionVerificationPageIds(actionConfig, annotation) {
|
1618
|
+
if (actionConfig.type === ActionType.REQUEST_CORRECTION) {
|
1619
|
+
return [
|
1620
|
+
...getVisibleVerificationPageIds(actionConfig.onboardingForm, annotation),
|
1621
|
+
...getVisibleVerificationPageIds(
|
1622
|
+
actionConfig.additionalDetailsForm,
|
1623
|
+
annotation
|
1624
|
+
)
|
1625
|
+
];
|
1626
|
+
}
|
1627
|
+
if (actionConfig.type === ActionType.PRINT_CERTIFICATE) {
|
1628
|
+
return getVisibleVerificationPageIds(
|
1629
|
+
actionConfig.printForm.pages,
|
1630
|
+
annotation
|
1631
|
+
);
|
1632
|
+
}
|
1633
|
+
return [];
|
1634
|
+
}
|
1635
|
+
function omitHiddenAnnotationFields(actionConfig, declaration, annotation) {
|
1636
|
+
const annotationFields = getActionAnnotationFields(actionConfig);
|
1637
|
+
const visibleVerificationPageIds = getActionVerificationPageIds(
|
1638
|
+
actionConfig,
|
1639
|
+
annotation
|
1640
|
+
);
|
1641
|
+
return omitHiddenFields(
|
1642
|
+
annotationFields,
|
1643
|
+
{ ...declaration, ...annotation },
|
1644
|
+
visibleVerificationPageIds
|
1645
|
+
);
|
1646
|
+
}
|
1647
|
+
function deepMerge(currentDocument, actionDocument) {
|
1648
|
+
return (0, import_lodash.mergeWith)(
|
1649
|
+
currentDocument,
|
1650
|
+
actionDocument,
|
1651
|
+
(previousValue, incomingValue) => {
|
1652
|
+
if (incomingValue === void 0) {
|
1653
|
+
return previousValue;
|
1654
|
+
}
|
1655
|
+
if ((0, import_lodash.isArray)(incomingValue)) {
|
1656
|
+
return incomingValue;
|
1657
|
+
}
|
1658
|
+
if ((0, import_lodash.isObject)(previousValue) && (0, import_lodash.isObject)(incomingValue)) {
|
1659
|
+
return void 0;
|
1660
|
+
}
|
1661
|
+
return incomingValue;
|
1662
|
+
}
|
1663
|
+
);
|
1664
|
+
}
|
1665
|
+
function findLastAssignmentAction(actions) {
|
1666
|
+
return actions.filter(
|
1667
|
+
({ type }) => type === ActionType.ASSIGN || type === ActionType.UNASSIGN
|
1668
|
+
).reduce((latestAction, action) => !latestAction || action.createdAt > latestAction.createdAt ? action : latestAction, void 0);
|
1669
|
+
}
|
1670
|
+
function isWriteAction(actionType) {
|
1671
|
+
return writeActions.safeParse(actionType).success;
|
1672
|
+
}
|
1673
|
+
var findAllFields = (config) => {
|
1674
|
+
return (0, import_lodash.flattenDeep)([
|
1675
|
+
...getDeclarationFields(config),
|
1676
|
+
...getAllAnnotationFields(config)
|
1677
|
+
]);
|
1678
|
+
};
|
1498
1679
|
|
1499
1680
|
// ../commons/src/events/EventConfig.ts
|
1500
|
-
var
|
1501
|
-
|
1681
|
+
var import_zod_openapi3 = require("zod-openapi");
|
1682
|
+
(0, import_zod_openapi3.extendZodWithOpenApi)(import_zod16.z);
|
1683
|
+
var EventConfig = import_zod16.z.object({
|
1684
|
+
id: import_zod16.z.string().describe(
|
1502
1685
|
'A machine-readable identifier for the event, e.g. "birth" or "death"'
|
1503
1686
|
),
|
1687
|
+
dateOfEvent: import_zod16.z.object({ fieldId: import_zod16.z.string() }).optional(),
|
1688
|
+
title: TranslationConfig,
|
1689
|
+
fallbackTitle: TranslationConfig.optional().describe(
|
1690
|
+
"This is a fallback title if actual title resolves to empty string"
|
1691
|
+
),
|
1504
1692
|
summary: SummaryConfig,
|
1505
1693
|
label: TranslationConfig,
|
1506
|
-
actions:
|
1507
|
-
|
1508
|
-
deduplication:
|
1509
|
-
advancedSearch:
|
1694
|
+
actions: import_zod16.z.array(ActionConfig),
|
1695
|
+
declaration: DeclarationFormConfig,
|
1696
|
+
deduplication: import_zod16.z.array(DeduplicationConfig).optional().default([]),
|
1697
|
+
advancedSearch: import_zod16.z.array(AdvancedSearchConfig).optional().default([])
|
1510
1698
|
}).superRefine((event2, ctx) => {
|
1511
|
-
const allFields =
|
1699
|
+
const allFields = findAllFields(event2);
|
1512
1700
|
const fieldIds = allFields.map((field2) => field2.id);
|
1513
1701
|
const advancedSearchFields = event2.advancedSearch.flatMap(
|
1514
1702
|
(section) => section.fields.flatMap((field2) => field2.fieldId)
|
@@ -1522,289 +1710,497 @@ var EventConfig = import_zod18.z.object({
|
|
1522
1710
|
});
|
1523
1711
|
}
|
1524
1712
|
const invalidFields = event2.advancedSearch.flatMap(
|
1525
|
-
(section) =>
|
1713
|
+
(section) => (
|
1714
|
+
// Check if the fieldId is not in the fieldIds array
|
1715
|
+
// and also not in the metadataFields array
|
1716
|
+
section.fields.filter(
|
1717
|
+
(field2) => !(fieldIds.includes(field2.fieldId) || EventFieldId.options.includes(field2.fieldId))
|
1718
|
+
)
|
1719
|
+
)
|
1526
1720
|
);
|
1527
1721
|
if (invalidFields.length > 0) {
|
1528
1722
|
ctx.addIssue({
|
1529
1723
|
code: "custom",
|
1530
|
-
message: `Advanced search id must match a field id
|
1724
|
+
message: `Advanced search id must match a field id of form fields or pre-defined metadata fields.
|
1531
1725
|
Invalid AdvancedSearch field IDs for event ${event2.id}: ${invalidFields.map((f) => f.fieldId).join(", ")}`,
|
1532
1726
|
path: ["advancedSearch"]
|
1533
1727
|
});
|
1534
1728
|
}
|
1729
|
+
if (event2.dateOfEvent) {
|
1730
|
+
const eventDateFieldId = getDeclarationFields(event2).find(
|
1731
|
+
({ id }) => id === event2.dateOfEvent?.fieldId
|
1732
|
+
);
|
1733
|
+
if (!eventDateFieldId) {
|
1734
|
+
ctx.addIssue({
|
1735
|
+
code: "custom",
|
1736
|
+
message: `Date of event field id must match a field id in fields array.
|
1737
|
+
Invalid date of event field ID for event ${event2.id}: ${event2.dateOfEvent.fieldId}`,
|
1738
|
+
path: ["dateOfEvent"]
|
1739
|
+
});
|
1740
|
+
} else if (eventDateFieldId.type !== FieldType.DATE) {
|
1741
|
+
ctx.addIssue({
|
1742
|
+
code: "custom",
|
1743
|
+
message: `Field specified for date of event is of type: ${eventDateFieldId.type}, but it needs to be of type: ${FieldType.DATE}`,
|
1744
|
+
path: ["dateOfEvent.fieldType"]
|
1745
|
+
});
|
1746
|
+
}
|
1747
|
+
}
|
1748
|
+
}).openapi({
|
1749
|
+
ref: "EventConfig"
|
1535
1750
|
});
|
1536
1751
|
|
1537
1752
|
// ../commons/src/events/EventConfigInput.ts
|
1538
|
-
var
|
1539
|
-
var
|
1753
|
+
var defineDeclarationForm = (form) => DeclarationFormConfig.parse(form);
|
1754
|
+
var defineActionForm = (actionForm) => ActionFormConfig.parse(actionForm);
|
1755
|
+
var definePage = (page) => PageConfig.parse(page);
|
1756
|
+
var defineFormPage = (formPage) => FormPageConfig.parse(formPage);
|
1757
|
+
|
1758
|
+
// ../commons/src/events/WorkqueueConfig.ts
|
1759
|
+
var import_zod17 = require("zod");
|
1760
|
+
var WorkqueueConfig = import_zod17.z.object({
|
1761
|
+
slug: import_zod17.z.string().describe("Determines the url of the workqueue."),
|
1762
|
+
name: TranslationConfig.describe(
|
1763
|
+
"Title of the workflow (both in navigation and on the page)"
|
1764
|
+
),
|
1765
|
+
/**
|
1766
|
+
* Placeholder untill the following gets merged to develop
|
1767
|
+
* https://github.com/opencrvs/opencrvs-core/blob/5fbe9854a88504a7a13fcc856b3e82594b70c38c/packages/commons/src/events/EventIndex.ts#L92-L93
|
1768
|
+
*/
|
1769
|
+
query: import_zod17.z.string(),
|
1770
|
+
actions: import_zod17.z.array(
|
1771
|
+
import_zod17.z.object({
|
1772
|
+
type: import_zod17.z.string(),
|
1773
|
+
conditionals: import_zod17.z.array(Conditional).optional()
|
1774
|
+
})
|
1775
|
+
)
|
1776
|
+
}).describe("Configuration for workqueue.");
|
1777
|
+
function defineWorkqueue(workqueues) {
|
1778
|
+
return workqueues.map((workqueue) => WorkqueueConfig.parse(workqueue));
|
1779
|
+
}
|
1540
1780
|
|
1541
1781
|
// ../commons/src/events/Draft.ts
|
1542
|
-
var
|
1782
|
+
var import_zod20 = require("zod");
|
1543
1783
|
|
1544
1784
|
// ../commons/src/events/ActionDocument.ts
|
1545
|
-
var
|
1546
|
-
var
|
1547
|
-
|
1548
|
-
|
1549
|
-
|
1550
|
-
|
1551
|
-
|
1552
|
-
|
1553
|
-
|
1785
|
+
var import_zod18 = require("zod");
|
1786
|
+
var import_zod_openapi4 = require("zod-openapi");
|
1787
|
+
(0, import_zod_openapi4.extendZodWithOpenApi)(import_zod18.z);
|
1788
|
+
var ActionUpdate = import_zod18.z.record(import_zod18.z.string(), FieldUpdateValue);
|
1789
|
+
var ActionStatus = {
|
1790
|
+
Requested: "Requested",
|
1791
|
+
Accepted: "Accepted",
|
1792
|
+
Rejected: "Rejected"
|
1793
|
+
};
|
1794
|
+
var ActionBase = import_zod18.z.object({
|
1795
|
+
id: import_zod18.z.string(),
|
1796
|
+
transactionId: import_zod18.z.string(),
|
1797
|
+
createdAt: import_zod18.z.string().datetime(),
|
1798
|
+
createdBy: import_zod18.z.string(),
|
1799
|
+
createdByRole: import_zod18.z.string(),
|
1800
|
+
declaration: ActionUpdate,
|
1801
|
+
annotation: ActionUpdate.optional(),
|
1802
|
+
createdAtLocation: import_zod18.z.string().optional(),
|
1803
|
+
updatedAtLocation: import_zod18.z.string().optional(),
|
1804
|
+
status: import_zod18.z.enum([
|
1805
|
+
ActionStatus.Requested,
|
1806
|
+
ActionStatus.Accepted,
|
1807
|
+
ActionStatus.Rejected
|
1808
|
+
]),
|
1809
|
+
// If the action is an asynchronous confirmation for another action, we will save the original action id here.
|
1810
|
+
originalActionId: import_zod18.z.string().optional()
|
1554
1811
|
});
|
1555
1812
|
var AssignedAction = ActionBase.merge(
|
1556
|
-
|
1557
|
-
type:
|
1558
|
-
assignedTo:
|
1813
|
+
import_zod18.z.object({
|
1814
|
+
type: import_zod18.z.literal(ActionType.ASSIGN),
|
1815
|
+
assignedTo: import_zod18.z.string()
|
1559
1816
|
})
|
1560
1817
|
);
|
1561
1818
|
var UnassignedAction = ActionBase.merge(
|
1562
|
-
|
1563
|
-
type:
|
1819
|
+
import_zod18.z.object({
|
1820
|
+
type: import_zod18.z.literal(ActionType.UNASSIGN),
|
1821
|
+
assignedTo: import_zod18.z.literal(null)
|
1564
1822
|
})
|
1565
1823
|
);
|
1566
1824
|
var RegisterAction = ActionBase.merge(
|
1567
|
-
|
1568
|
-
type:
|
1569
|
-
|
1570
|
-
trackingId: import_zod19.z.string(),
|
1571
|
-
registrationNumber: import_zod19.z.string()
|
1572
|
-
})
|
1825
|
+
import_zod18.z.object({
|
1826
|
+
type: import_zod18.z.literal(ActionType.REGISTER),
|
1827
|
+
registrationNumber: import_zod18.z.string().optional()
|
1573
1828
|
})
|
1574
1829
|
);
|
1575
1830
|
var DeclareAction = ActionBase.merge(
|
1576
|
-
|
1577
|
-
type:
|
1831
|
+
import_zod18.z.object({
|
1832
|
+
type: import_zod18.z.literal(ActionType.DECLARE)
|
1578
1833
|
})
|
1579
1834
|
);
|
1580
1835
|
var ValidateAction = ActionBase.merge(
|
1581
|
-
|
1582
|
-
type:
|
1836
|
+
import_zod18.z.object({
|
1837
|
+
type: import_zod18.z.literal(ActionType.VALIDATE)
|
1583
1838
|
})
|
1584
1839
|
);
|
1585
1840
|
var RejectAction = ActionBase.merge(
|
1586
|
-
|
1587
|
-
type:
|
1841
|
+
import_zod18.z.object({
|
1842
|
+
type: import_zod18.z.literal(ActionType.REJECT)
|
1588
1843
|
})
|
1589
1844
|
);
|
1590
1845
|
var MarkAsDuplicateAction = ActionBase.merge(
|
1591
|
-
|
1592
|
-
type:
|
1846
|
+
import_zod18.z.object({
|
1847
|
+
type: import_zod18.z.literal(ActionType.MARKED_AS_DUPLICATE)
|
1593
1848
|
})
|
1594
1849
|
);
|
1595
|
-
var
|
1596
|
-
|
1597
|
-
type:
|
1850
|
+
var ArchiveAction = ActionBase.merge(
|
1851
|
+
import_zod18.z.object({
|
1852
|
+
type: import_zod18.z.literal(ActionType.ARCHIVE)
|
1598
1853
|
})
|
1599
1854
|
);
|
1600
1855
|
var CreatedAction = ActionBase.merge(
|
1601
|
-
|
1602
|
-
type:
|
1856
|
+
import_zod18.z.object({
|
1857
|
+
type: import_zod18.z.literal(ActionType.CREATE)
|
1603
1858
|
})
|
1604
1859
|
);
|
1605
1860
|
var NotifiedAction = ActionBase.merge(
|
1606
|
-
|
1607
|
-
type:
|
1861
|
+
import_zod18.z.object({
|
1862
|
+
type: import_zod18.z.literal(ActionType.NOTIFY)
|
1608
1863
|
})
|
1609
1864
|
);
|
1610
1865
|
var PrintCertificateAction = ActionBase.merge(
|
1611
|
-
|
1612
|
-
type:
|
1866
|
+
import_zod18.z.object({
|
1867
|
+
type: import_zod18.z.literal(ActionType.PRINT_CERTIFICATE)
|
1613
1868
|
})
|
1614
1869
|
);
|
1615
1870
|
var RequestedCorrectionAction = ActionBase.merge(
|
1616
|
-
|
1617
|
-
type:
|
1871
|
+
import_zod18.z.object({
|
1872
|
+
type: import_zod18.z.literal(ActionType.REQUEST_CORRECTION)
|
1618
1873
|
})
|
1619
1874
|
);
|
1620
1875
|
var ApprovedCorrectionAction = ActionBase.merge(
|
1621
|
-
|
1622
|
-
type:
|
1623
|
-
requestId:
|
1876
|
+
import_zod18.z.object({
|
1877
|
+
type: import_zod18.z.literal(ActionType.APPROVE_CORRECTION),
|
1878
|
+
requestId: import_zod18.z.string()
|
1624
1879
|
})
|
1625
1880
|
);
|
1626
1881
|
var RejectedCorrectionAction = ActionBase.merge(
|
1627
|
-
|
1628
|
-
type:
|
1629
|
-
requestId:
|
1882
|
+
import_zod18.z.object({
|
1883
|
+
type: import_zod18.z.literal(ActionType.REJECT_CORRECTION),
|
1884
|
+
requestId: import_zod18.z.string()
|
1630
1885
|
})
|
1631
1886
|
);
|
1632
|
-
var
|
1633
|
-
|
1634
|
-
type:
|
1887
|
+
var ReadAction = ActionBase.merge(
|
1888
|
+
import_zod18.z.object({
|
1889
|
+
type: import_zod18.z.literal(ActionType.READ)
|
1635
1890
|
})
|
1636
1891
|
);
|
1637
|
-
var ActionDocument =
|
1638
|
-
CreatedAction,
|
1639
|
-
ValidateAction,
|
1640
|
-
RejectAction,
|
1641
|
-
MarkAsDuplicateAction,
|
1642
|
-
|
1643
|
-
NotifiedAction,
|
1644
|
-
RegisterAction,
|
1645
|
-
DeclareAction,
|
1646
|
-
AssignedAction,
|
1647
|
-
RequestedCorrectionAction,
|
1648
|
-
ApprovedCorrectionAction,
|
1649
|
-
RejectedCorrectionAction,
|
1650
|
-
UnassignedAction,
|
1651
|
-
PrintCertificateAction,
|
1652
|
-
|
1653
|
-
])
|
1654
|
-
|
1655
|
-
|
1656
|
-
|
1657
|
-
|
1658
|
-
|
1659
|
-
|
1660
|
-
|
1661
|
-
|
1892
|
+
var ActionDocument = import_zod18.z.discriminatedUnion("type", [
|
1893
|
+
CreatedAction.openapi({ ref: "CreatedAction" }),
|
1894
|
+
ValidateAction.openapi({ ref: "ValidateAction" }),
|
1895
|
+
RejectAction.openapi({ ref: "RejectAction" }),
|
1896
|
+
MarkAsDuplicateAction.openapi({ ref: "MarkAsDuplicateAction" }),
|
1897
|
+
ArchiveAction.openapi({ ref: "ArchiveAction" }),
|
1898
|
+
NotifiedAction.openapi({ ref: "NotifiedAction" }),
|
1899
|
+
RegisterAction.openapi({ ref: "RegisterAction" }),
|
1900
|
+
DeclareAction.openapi({ ref: "DeclareAction" }),
|
1901
|
+
AssignedAction.openapi({ ref: "AssignedAction" }),
|
1902
|
+
RequestedCorrectionAction.openapi({ ref: "RequestedCorrectionAction" }),
|
1903
|
+
ApprovedCorrectionAction.openapi({ ref: "ApprovedCorrectionAction" }),
|
1904
|
+
RejectedCorrectionAction.openapi({ ref: "RejectedCorrectionAction" }),
|
1905
|
+
UnassignedAction.openapi({ ref: "UnassignedAction" }),
|
1906
|
+
PrintCertificateAction.openapi({ ref: "PrintCertificateAction" }),
|
1907
|
+
ReadAction.openapi({ ref: "ReadAction" })
|
1908
|
+
]).openapi({
|
1909
|
+
ref: "ActionDocument"
|
1910
|
+
});
|
1911
|
+
var AsyncRejectActionDocument = ActionBase.omit({
|
1912
|
+
declaration: true,
|
1913
|
+
annotation: true,
|
1914
|
+
createdBy: true,
|
1915
|
+
createdByRole: true,
|
1916
|
+
createdAtLocation: true
|
1917
|
+
}).merge(
|
1918
|
+
import_zod18.z.object({
|
1919
|
+
type: import_zod18.z.enum(ConfirmableActions),
|
1920
|
+
status: import_zod18.z.literal(ActionStatus.Rejected)
|
1921
|
+
})
|
1922
|
+
);
|
1923
|
+
var Action = import_zod18.z.union([ActionDocument, AsyncRejectActionDocument]);
|
1924
|
+
var ResolvedUser = import_zod18.z.object({
|
1925
|
+
id: import_zod18.z.string(),
|
1926
|
+
role: import_zod18.z.string(),
|
1927
|
+
name: import_zod18.z.array(
|
1928
|
+
import_zod18.z.object({
|
1929
|
+
use: import_zod18.z.string(),
|
1930
|
+
given: import_zod18.z.array(import_zod18.z.string()),
|
1931
|
+
family: import_zod18.z.string()
|
1662
1932
|
})
|
1663
1933
|
)
|
1664
1934
|
});
|
1665
1935
|
|
1666
1936
|
// ../commons/src/events/ActionInput.ts
|
1667
|
-
var
|
1668
|
-
var
|
1669
|
-
|
1670
|
-
|
1671
|
-
|
1672
|
-
|
1673
|
-
|
1937
|
+
var import_zod19 = require("zod");
|
1938
|
+
var import_zod_openapi5 = require("zod-openapi");
|
1939
|
+
(0, import_zod_openapi5.extendZodWithOpenApi)(import_zod19.z);
|
1940
|
+
var BaseActionInput = import_zod19.z.object({
|
1941
|
+
eventId: import_zod19.z.string(),
|
1942
|
+
transactionId: import_zod19.z.string(),
|
1943
|
+
declaration: ActionUpdate.default({}),
|
1944
|
+
annotation: ActionUpdate.optional(),
|
1945
|
+
originalActionId: import_zod19.z.string().optional(),
|
1946
|
+
keepAssignment: import_zod19.z.boolean().optional()
|
1674
1947
|
});
|
1675
1948
|
var CreateActionInput = BaseActionInput.merge(
|
1676
|
-
|
1677
|
-
type:
|
1678
|
-
createdAtLocation:
|
1949
|
+
import_zod19.z.object({
|
1950
|
+
type: import_zod19.z.literal(ActionType.CREATE).default(ActionType.CREATE),
|
1951
|
+
createdAtLocation: import_zod19.z.string()
|
1679
1952
|
})
|
1680
1953
|
);
|
1681
1954
|
var RegisterActionInput = BaseActionInput.merge(
|
1682
|
-
|
1683
|
-
type:
|
1684
|
-
|
1685
|
-
trackingId: import_zod20.z.string(),
|
1686
|
-
registrationNumber: import_zod20.z.string()
|
1687
|
-
})
|
1955
|
+
import_zod19.z.object({
|
1956
|
+
type: import_zod19.z.literal(ActionType.REGISTER).default(ActionType.REGISTER),
|
1957
|
+
registrationNumber: import_zod19.z.string().optional()
|
1688
1958
|
})
|
1689
1959
|
);
|
1690
1960
|
var ValidateActionInput = BaseActionInput.merge(
|
1691
|
-
|
1692
|
-
type:
|
1693
|
-
duplicates:
|
1961
|
+
import_zod19.z.object({
|
1962
|
+
type: import_zod19.z.literal(ActionType.VALIDATE).default(ActionType.VALIDATE),
|
1963
|
+
duplicates: import_zod19.z.array(import_zod19.z.string())
|
1694
1964
|
})
|
1695
1965
|
);
|
1696
1966
|
var NotifyActionInput = BaseActionInput.merge(
|
1697
|
-
|
1698
|
-
type:
|
1699
|
-
createdAtLocation: import_zod20.z.string()
|
1967
|
+
import_zod19.z.object({
|
1968
|
+
type: import_zod19.z.literal(ActionType.NOTIFY).default(ActionType.NOTIFY)
|
1700
1969
|
})
|
1701
1970
|
);
|
1702
1971
|
var DeclareActionInput = BaseActionInput.merge(
|
1703
|
-
|
1704
|
-
type:
|
1972
|
+
import_zod19.z.object({
|
1973
|
+
type: import_zod19.z.literal(ActionType.DECLARE).default(ActionType.DECLARE)
|
1705
1974
|
})
|
1706
1975
|
);
|
1707
1976
|
var PrintCertificateActionInput = BaseActionInput.merge(
|
1708
|
-
|
1709
|
-
type:
|
1977
|
+
import_zod19.z.object({
|
1978
|
+
type: import_zod19.z.literal(ActionType.PRINT_CERTIFICATE).default(ActionType.PRINT_CERTIFICATE)
|
1710
1979
|
})
|
1711
1980
|
);
|
1712
1981
|
var RejectDeclarationActionInput = BaseActionInput.merge(
|
1713
|
-
|
1714
|
-
type:
|
1982
|
+
import_zod19.z.object({
|
1983
|
+
type: import_zod19.z.literal(ActionType.REJECT).default(ActionType.REJECT)
|
1715
1984
|
})
|
1716
1985
|
);
|
1717
1986
|
var MarkedAsDuplicateActionInput = BaseActionInput.merge(
|
1718
|
-
|
1719
|
-
type:
|
1987
|
+
import_zod19.z.object({
|
1988
|
+
type: import_zod19.z.literal(ActionType.MARKED_AS_DUPLICATE).default(ActionType.MARKED_AS_DUPLICATE)
|
1720
1989
|
})
|
1721
1990
|
);
|
1722
|
-
var
|
1723
|
-
|
1724
|
-
type:
|
1991
|
+
var ArchiveActionInput = BaseActionInput.merge(
|
1992
|
+
import_zod19.z.object({
|
1993
|
+
type: import_zod19.z.literal(ActionType.ARCHIVE).default(ActionType.ARCHIVE)
|
1725
1994
|
})
|
1726
1995
|
);
|
1727
1996
|
var AssignActionInput = BaseActionInput.merge(
|
1728
|
-
|
1729
|
-
type:
|
1730
|
-
assignedTo:
|
1997
|
+
import_zod19.z.object({
|
1998
|
+
type: import_zod19.z.literal(ActionType.ASSIGN).default(ActionType.ASSIGN),
|
1999
|
+
assignedTo: import_zod19.z.string()
|
1731
2000
|
})
|
1732
2001
|
);
|
1733
2002
|
var UnassignActionInput = BaseActionInput.merge(
|
1734
|
-
|
1735
|
-
type:
|
2003
|
+
import_zod19.z.object({
|
2004
|
+
type: import_zod19.z.literal(ActionType.UNASSIGN).default(ActionType.UNASSIGN),
|
2005
|
+
assignedTo: import_zod19.z.literal(null).default(null)
|
1736
2006
|
})
|
1737
2007
|
);
|
1738
2008
|
var RequestCorrectionActionInput = BaseActionInput.merge(
|
1739
|
-
|
1740
|
-
type:
|
2009
|
+
import_zod19.z.object({
|
2010
|
+
type: import_zod19.z.literal(ActionType.REQUEST_CORRECTION).default(ActionType.REQUEST_CORRECTION)
|
1741
2011
|
})
|
1742
2012
|
);
|
1743
2013
|
var RejectCorrectionActionInput = BaseActionInput.merge(
|
1744
|
-
|
1745
|
-
requestId:
|
1746
|
-
type:
|
2014
|
+
import_zod19.z.object({
|
2015
|
+
requestId: import_zod19.z.string(),
|
2016
|
+
type: import_zod19.z.literal(ActionType.REJECT_CORRECTION).default(ActionType.REJECT_CORRECTION)
|
1747
2017
|
})
|
1748
2018
|
);
|
1749
2019
|
var ApproveCorrectionActionInput = BaseActionInput.merge(
|
1750
|
-
|
1751
|
-
requestId:
|
1752
|
-
type:
|
2020
|
+
import_zod19.z.object({
|
2021
|
+
requestId: import_zod19.z.string(),
|
2022
|
+
type: import_zod19.z.literal(ActionType.APPROVE_CORRECTION).default(ActionType.APPROVE_CORRECTION)
|
1753
2023
|
})
|
1754
2024
|
);
|
1755
|
-
var
|
1756
|
-
|
1757
|
-
|
1758
|
-
|
1759
|
-
|
1760
|
-
|
1761
|
-
|
1762
|
-
|
1763
|
-
|
1764
|
-
|
1765
|
-
|
1766
|
-
|
1767
|
-
|
1768
|
-
|
1769
|
-
|
1770
|
-
|
2025
|
+
var ReadActionInput = BaseActionInput.merge(
|
2026
|
+
import_zod19.z.object({
|
2027
|
+
type: import_zod19.z.literal(ActionType.READ).default(ActionType.READ)
|
2028
|
+
})
|
2029
|
+
);
|
2030
|
+
var DeleteActionInput = import_zod19.z.object({ eventId: import_zod19.z.string() });
|
2031
|
+
var ActionInput = import_zod19.z.discriminatedUnion("type", [
|
2032
|
+
CreateActionInput.openapi({ ref: "CreateActionInput" }),
|
2033
|
+
ValidateActionInput.openapi({ ref: "ValidateActionInput" }),
|
2034
|
+
RegisterActionInput.openapi({ ref: "RegisterActionInput" }),
|
2035
|
+
NotifyActionInput.openapi({ ref: "NotifyActionInput" }),
|
2036
|
+
DeclareActionInput.openapi({ ref: "DeclareActionInput" }),
|
2037
|
+
RejectDeclarationActionInput.openapi({
|
2038
|
+
ref: "RejectDeclarationActionInput"
|
2039
|
+
}),
|
2040
|
+
MarkedAsDuplicateActionInput.openapi({
|
2041
|
+
ref: "MarkedAsDuplicateActionInput"
|
2042
|
+
}),
|
2043
|
+
ArchiveActionInput.openapi({ ref: "ArchiveActionInput" }),
|
2044
|
+
AssignActionInput.openapi({ ref: "AssignActionInput" }),
|
2045
|
+
UnassignActionInput.openapi({ ref: "UnassignActionInput" }),
|
2046
|
+
PrintCertificateActionInput.openapi({ ref: "PrintCertificateActionInput" }),
|
2047
|
+
RequestCorrectionActionInput.openapi({
|
2048
|
+
ref: "RequestCorrectionActionInput"
|
2049
|
+
}),
|
2050
|
+
RejectCorrectionActionInput.openapi({ ref: "RejectCorrectionActionInput" }),
|
2051
|
+
ApproveCorrectionActionInput.openapi({
|
2052
|
+
ref: "ApproveCorrectionActionInput"
|
2053
|
+
}),
|
2054
|
+
ReadActionInput.openapi({ ref: "ReadActionInput" })
|
2055
|
+
]).openapi({
|
2056
|
+
ref: "ActionInput"
|
2057
|
+
});
|
1771
2058
|
|
1772
2059
|
// ../commons/src/events/Draft.ts
|
1773
|
-
var Draft =
|
1774
|
-
id:
|
1775
|
-
eventId:
|
1776
|
-
transactionId:
|
1777
|
-
createdAt:
|
2060
|
+
var Draft = import_zod20.z.object({
|
2061
|
+
id: import_zod20.z.string(),
|
2062
|
+
eventId: import_zod20.z.string(),
|
2063
|
+
transactionId: import_zod20.z.string(),
|
2064
|
+
createdAt: import_zod20.z.string().datetime(),
|
1778
2065
|
action: ActionBase.extend({
|
1779
|
-
type:
|
2066
|
+
type: ActionTypes
|
1780
2067
|
}).omit({ id: true })
|
1781
2068
|
});
|
1782
2069
|
var DraftInput = BaseActionInput.extend({
|
1783
|
-
type:
|
2070
|
+
type: ActionTypes
|
2071
|
+
});
|
2072
|
+
|
2073
|
+
// ../commons/src/events/EventMetadata.ts
|
2074
|
+
var import_zod21 = require("zod");
|
2075
|
+
var EventStatus = {
|
2076
|
+
CREATED: "CREATED",
|
2077
|
+
NOTIFIED: "NOTIFIED",
|
2078
|
+
DECLARED: "DECLARED",
|
2079
|
+
VALIDATED: "VALIDATED",
|
2080
|
+
REGISTERED: "REGISTERED",
|
2081
|
+
CERTIFIED: "CERTIFIED",
|
2082
|
+
REJECTED: "REJECTED",
|
2083
|
+
ARCHIVED: "ARCHIVED"
|
2084
|
+
};
|
2085
|
+
var eventStatuses = Object.values(EventStatus);
|
2086
|
+
var EventStatuses = import_zod21.z.nativeEnum(EventStatus);
|
2087
|
+
var ZodDate = import_zod21.z.string().date();
|
2088
|
+
var EventMetadata = import_zod21.z.object({
|
2089
|
+
id: import_zod21.z.string(),
|
2090
|
+
type: import_zod21.z.string(),
|
2091
|
+
status: EventStatuses,
|
2092
|
+
createdAt: import_zod21.z.string().datetime(),
|
2093
|
+
dateOfEvent: ZodDate.nullish(),
|
2094
|
+
createdBy: import_zod21.z.string(),
|
2095
|
+
updatedByUserRole: import_zod21.z.string(),
|
2096
|
+
createdAtLocation: import_zod21.z.string(),
|
2097
|
+
updatedAtLocation: import_zod21.z.string(),
|
2098
|
+
updatedAt: import_zod21.z.string().datetime(),
|
2099
|
+
assignedTo: import_zod21.z.string().nullish(),
|
2100
|
+
updatedBy: import_zod21.z.string(),
|
2101
|
+
trackingId: import_zod21.z.string(),
|
2102
|
+
registrationNumber: import_zod21.z.string().nullish()
|
1784
2103
|
});
|
2104
|
+
var eventMetadataLabelMap = {
|
2105
|
+
"event.assignedTo": {
|
2106
|
+
id: "event.assignedTo.label",
|
2107
|
+
defaultMessage: "Assigned To",
|
2108
|
+
description: "Assigned To"
|
2109
|
+
},
|
2110
|
+
"event.createdAt": {
|
2111
|
+
id: "event.createdAt.label",
|
2112
|
+
defaultMessage: "Created",
|
2113
|
+
description: "Created At"
|
2114
|
+
},
|
2115
|
+
"event.dateOfEvent": {
|
2116
|
+
id: "event.dateOfEvent.label",
|
2117
|
+
defaultMessage: "Date of Event",
|
2118
|
+
description: "Date of Event"
|
2119
|
+
},
|
2120
|
+
"event.createdAtLocation": {
|
2121
|
+
id: "event.createdAtLocation.label",
|
2122
|
+
defaultMessage: "Location",
|
2123
|
+
description: "Created At Location"
|
2124
|
+
},
|
2125
|
+
"event.updatedAtLocation": {
|
2126
|
+
id: "event.updatedAtLocation.label",
|
2127
|
+
defaultMessage: "Location",
|
2128
|
+
description: "Updated At Location"
|
2129
|
+
},
|
2130
|
+
"event.createdBy": {
|
2131
|
+
id: "event.createdBy.label",
|
2132
|
+
defaultMessage: "Created By",
|
2133
|
+
description: "Created By"
|
2134
|
+
},
|
2135
|
+
"event.updatedByUserRole": {
|
2136
|
+
id: "event.updatedByUserRole.label",
|
2137
|
+
defaultMessage: "Updated By Role",
|
2138
|
+
description: "Updated By Role"
|
2139
|
+
},
|
2140
|
+
"event.id": {
|
2141
|
+
id: "event.id.label",
|
2142
|
+
defaultMessage: "ID",
|
2143
|
+
description: "ID"
|
2144
|
+
},
|
2145
|
+
"event.updatedAt": {
|
2146
|
+
id: "event.modifiedAt.label",
|
2147
|
+
defaultMessage: "Updated",
|
2148
|
+
description: "Modified At"
|
2149
|
+
},
|
2150
|
+
"event.status": {
|
2151
|
+
id: "event.status.label",
|
2152
|
+
defaultMessage: "Status",
|
2153
|
+
description: "Status"
|
2154
|
+
},
|
2155
|
+
"event.type": {
|
2156
|
+
id: "event.type.label",
|
2157
|
+
defaultMessage: "Type",
|
2158
|
+
description: "Type"
|
2159
|
+
},
|
2160
|
+
"event.updatedBy": {
|
2161
|
+
id: "event.updatedBy.label",
|
2162
|
+
defaultMessage: "Updated By",
|
2163
|
+
description: "Updated By"
|
2164
|
+
},
|
2165
|
+
"event.trackingId": {
|
2166
|
+
id: "event.trackingId.label",
|
2167
|
+
defaultMessage: "Tracking ID",
|
2168
|
+
description: "Tracking ID"
|
2169
|
+
},
|
2170
|
+
"event.registrationNumber": {
|
2171
|
+
id: "event.registrationNumber.label",
|
2172
|
+
defaultMessage: "Registration Number",
|
2173
|
+
description: "Registration Number"
|
2174
|
+
}
|
2175
|
+
};
|
1785
2176
|
|
1786
2177
|
// ../commons/src/events/EventInput.ts
|
1787
2178
|
var import_zod22 = require("zod");
|
1788
2179
|
var EventInput = import_zod22.z.object({
|
1789
2180
|
transactionId: import_zod22.z.string(),
|
1790
|
-
type: import_zod22.z.string()
|
2181
|
+
type: import_zod22.z.string(),
|
2182
|
+
dateOfEvent: import_zod22.z.object({ fieldId: import_zod22.z.string() }).optional()
|
1791
2183
|
});
|
1792
2184
|
|
1793
2185
|
// ../commons/src/events/EventDocument.ts
|
1794
2186
|
var import_zod23 = require("zod");
|
2187
|
+
var import_zod_openapi6 = require("zod-openapi");
|
2188
|
+
(0, import_zod_openapi6.extendZodWithOpenApi)(import_zod23.z);
|
1795
2189
|
var EventDocument = import_zod23.z.object({
|
1796
2190
|
id: import_zod23.z.string(),
|
1797
2191
|
type: import_zod23.z.string(),
|
2192
|
+
dateOfEvent: import_zod23.z.object({ fieldId: import_zod23.z.string() }).optional(),
|
1798
2193
|
createdAt: import_zod23.z.string().datetime(),
|
1799
2194
|
updatedAt: import_zod23.z.string().datetime(),
|
1800
|
-
|
2195
|
+
updatedAtLocation: import_zod23.z.string(),
|
2196
|
+
actions: import_zod23.z.array(Action),
|
1801
2197
|
trackingId: import_zod23.z.string()
|
1802
|
-
});
|
2198
|
+
}).openapi({ ref: "EventDocument" });
|
1803
2199
|
|
1804
2200
|
// ../commons/src/events/EventIndex.ts
|
1805
2201
|
var import_zod24 = require("zod");
|
1806
2202
|
var EventIndex = EventMetadata.extend({
|
1807
|
-
|
2203
|
+
declaration: import_zod24.z.record(import_zod24.z.string(), import_zod24.z.any())
|
1808
2204
|
});
|
1809
2205
|
var EventSearchIndex = import_zod24.z.record(import_zod24.z.string(), import_zod24.z.any()).and(
|
1810
2206
|
import_zod24.z.object({
|
@@ -1812,32 +2208,94 @@ var EventSearchIndex = import_zod24.z.record(import_zod24.z.string(), import_zod
|
|
1812
2208
|
// Ensures "type" (event-id) exists and is a string
|
1813
2209
|
})
|
1814
2210
|
);
|
2211
|
+
var Fuzzy = import_zod24.z.object({ type: import_zod24.z.literal("fuzzy"), term: import_zod24.z.string() });
|
2212
|
+
var Exact = import_zod24.z.object({ type: import_zod24.z.literal("exact"), term: import_zod24.z.string() });
|
2213
|
+
var AnyOf = import_zod24.z.object({
|
2214
|
+
type: import_zod24.z.literal("anyOf"),
|
2215
|
+
terms: import_zod24.z.array(import_zod24.z.string())
|
2216
|
+
});
|
2217
|
+
var Range = import_zod24.z.object({
|
2218
|
+
type: import_zod24.z.literal("range"),
|
2219
|
+
gte: import_zod24.z.string(),
|
2220
|
+
lte: import_zod24.z.string()
|
2221
|
+
});
|
2222
|
+
var Within = import_zod24.z.object({ type: import_zod24.z.literal("within"), location: import_zod24.z.string() });
|
2223
|
+
var DateCondition = import_zod24.z.union([Exact, Range]);
|
2224
|
+
var QueryInput = import_zod24.z.lazy(
|
2225
|
+
() => import_zod24.z.union([
|
2226
|
+
import_zod24.z.discriminatedUnion("type", [Fuzzy, Exact, Range, Within, AnyOf]),
|
2227
|
+
import_zod24.z.record(import_zod24.z.string(), QueryInput)
|
2228
|
+
])
|
2229
|
+
);
|
2230
|
+
var QueryExpression = import_zod24.z.object({
|
2231
|
+
type: import_zod24.z.literal("and"),
|
2232
|
+
eventType: import_zod24.z.string(),
|
2233
|
+
status: import_zod24.z.optional(import_zod24.z.union([AnyOf, Exact])),
|
2234
|
+
createdAt: import_zod24.z.optional(DateCondition),
|
2235
|
+
updatedAt: import_zod24.z.optional(DateCondition),
|
2236
|
+
createAtLocation: import_zod24.z.optional(import_zod24.z.union([Within, Exact])),
|
2237
|
+
updatedAtLocation: import_zod24.z.optional(import_zod24.z.union([Within, Exact])),
|
2238
|
+
createdBy: import_zod24.z.optional(Exact),
|
2239
|
+
updatedBy: import_zod24.z.optional(Exact),
|
2240
|
+
trackingId: import_zod24.z.optional(Exact),
|
2241
|
+
data: QueryInput
|
2242
|
+
}).partial();
|
2243
|
+
var Or2 = import_zod24.z.object({
|
2244
|
+
type: import_zod24.z.literal("or"),
|
2245
|
+
clauses: import_zod24.z.array(QueryExpression)
|
2246
|
+
});
|
2247
|
+
var QueryType = import_zod24.z.discriminatedUnion("type", [QueryExpression, Or2]);
|
1815
2248
|
|
1816
2249
|
// ../commons/src/events/state/index.ts
|
1817
|
-
var _ = __toESM(require("lodash"));
|
1818
2250
|
function getStatusFromActions(actions) {
|
2251
|
+
const hasRejectedAction = actions.some(
|
2252
|
+
(a) => a.status === ActionStatus.Rejected
|
2253
|
+
);
|
2254
|
+
if (hasRejectedAction) {
|
2255
|
+
return EventStatus.REJECTED;
|
2256
|
+
}
|
1819
2257
|
return actions.reduce((status, action) => {
|
1820
|
-
|
1821
|
-
|
1822
|
-
|
1823
|
-
|
1824
|
-
|
1825
|
-
|
1826
|
-
|
1827
|
-
|
1828
|
-
|
1829
|
-
|
1830
|
-
|
1831
|
-
|
1832
|
-
|
1833
|
-
|
1834
|
-
|
1835
|
-
|
1836
|
-
|
2258
|
+
switch (action.type) {
|
2259
|
+
case ActionType.CREATE:
|
2260
|
+
return EventStatus.CREATED;
|
2261
|
+
case ActionType.DECLARE:
|
2262
|
+
return EventStatus.DECLARED;
|
2263
|
+
case ActionType.VALIDATE:
|
2264
|
+
return EventStatus.VALIDATED;
|
2265
|
+
case ActionType.REGISTER:
|
2266
|
+
return EventStatus.REGISTERED;
|
2267
|
+
case ActionType.REJECT:
|
2268
|
+
return EventStatus.REJECTED;
|
2269
|
+
case ActionType.ARCHIVE:
|
2270
|
+
return EventStatus.ARCHIVED;
|
2271
|
+
case ActionType.NOTIFY:
|
2272
|
+
return EventStatus.NOTIFIED;
|
2273
|
+
case ActionType.PRINT_CERTIFICATE:
|
2274
|
+
return EventStatus.CERTIFIED;
|
2275
|
+
case ActionType.ASSIGN:
|
2276
|
+
case ActionType.UNASSIGN:
|
2277
|
+
case ActionType.REQUEST_CORRECTION:
|
2278
|
+
case ActionType.APPROVE_CORRECTION:
|
2279
|
+
case ActionType.MARKED_AS_DUPLICATE:
|
2280
|
+
case ActionType.REJECT_CORRECTION:
|
2281
|
+
case ActionType.READ:
|
2282
|
+
default:
|
2283
|
+
return status;
|
1837
2284
|
}
|
1838
|
-
return status;
|
1839
2285
|
}, EventStatus.CREATED);
|
1840
2286
|
}
|
2287
|
+
function getLastUpdatedByUserRoleFromActions(actions) {
|
2288
|
+
const actionsWithRoles = actions.filter(
|
2289
|
+
(action) => !isWriteAction(action.type) && action.status !== ActionStatus.Rejected
|
2290
|
+
).sort((a, b) => a.createdAt.localeCompare(b.createdAt));
|
2291
|
+
const lastAction = actionsWithRoles.at(-1);
|
2292
|
+
if (!lastAction) {
|
2293
|
+
throw new Error(
|
2294
|
+
"Should never happen, at least CREATE action should be present"
|
2295
|
+
);
|
2296
|
+
}
|
2297
|
+
return ActionDocument.parse(lastAction).createdByRole;
|
2298
|
+
}
|
1841
2299
|
function getAssignedUserFromActions(actions) {
|
1842
2300
|
return actions.reduce((user2, action) => {
|
1843
2301
|
if (action.type === ActionType.ASSIGN) {
|
@@ -1849,7 +2307,7 @@ function getAssignedUserFromActions(actions) {
|
|
1849
2307
|
return user2;
|
1850
2308
|
}, null);
|
1851
2309
|
}
|
1852
|
-
function
|
2310
|
+
function aggregateActionDeclarations(actions) {
|
1853
2311
|
const excludedActions = [
|
1854
2312
|
ActionType.REQUEST_CORRECTION,
|
1855
2313
|
ActionType.PRINT_CERTIFICATE
|
@@ -1863,46 +2321,34 @@ function getData(actions) {
|
|
1863
2321
|
if (!requestAction) {
|
1864
2322
|
return status;
|
1865
2323
|
}
|
1866
|
-
return deepMerge(status, requestAction.
|
2324
|
+
return deepMerge(status, requestAction.declaration);
|
1867
2325
|
}
|
1868
|
-
return deepMerge(status, action.
|
2326
|
+
return deepMerge(status, action.declaration);
|
1869
2327
|
}, {});
|
1870
2328
|
}
|
1871
2329
|
function deepDropNulls(obj) {
|
1872
|
-
if (
|
1873
|
-
|
1874
|
-
|
1875
|
-
|
1876
|
-
|
1877
|
-
|
1878
|
-
|
1879
|
-
|
1880
|
-
[key]
|
1881
|
-
};
|
1882
|
-
}
|
1883
|
-
return acc;
|
1884
|
-
}, {});
|
1885
|
-
}
|
1886
|
-
function deepMerge(currentDocument, actionDocument) {
|
1887
|
-
return _.mergeWith(
|
1888
|
-
currentDocument,
|
1889
|
-
actionDocument,
|
1890
|
-
(previousValue, incomingValue) => {
|
1891
|
-
if (incomingValue === void 0) {
|
1892
|
-
return previousValue;
|
1893
|
-
}
|
1894
|
-
if (_.isArray(incomingValue)) {
|
1895
|
-
return incomingValue;
|
1896
|
-
}
|
1897
|
-
if (_.isObject(previousValue) && _.isObject(incomingValue)) {
|
1898
|
-
return void 0;
|
2330
|
+
if (Array.isArray(obj)) {
|
2331
|
+
return obj.map(deepDropNulls);
|
2332
|
+
}
|
2333
|
+
if (obj !== null && typeof obj === "object") {
|
2334
|
+
return Object.entries(obj).reduce((acc, [key, value]) => {
|
2335
|
+
const cleanedValue = deepDropNulls(value);
|
2336
|
+
if (cleanedValue !== null) {
|
2337
|
+
;
|
2338
|
+
acc[key] = cleanedValue;
|
1899
2339
|
}
|
1900
|
-
return
|
1901
|
-
}
|
1902
|
-
|
2340
|
+
return acc;
|
2341
|
+
}, {});
|
2342
|
+
}
|
2343
|
+
return obj;
|
1903
2344
|
}
|
1904
|
-
function isUndeclaredDraft(
|
1905
|
-
return
|
2345
|
+
function isUndeclaredDraft(status) {
|
2346
|
+
return status === EventStatus.CREATED;
|
2347
|
+
}
|
2348
|
+
function getAcceptedActions(event2) {
|
2349
|
+
return event2.actions.filter(
|
2350
|
+
(a) => a.status === ActionStatus.Accepted
|
2351
|
+
);
|
1906
2352
|
}
|
1907
2353
|
function getCurrentEventState(event2) {
|
1908
2354
|
const creationAction = event2.actions.find(
|
@@ -1911,25 +2357,40 @@ function getCurrentEventState(event2) {
|
|
1911
2357
|
if (!creationAction) {
|
1912
2358
|
throw new Error(`Event ${event2.id} has no creation action`);
|
1913
2359
|
}
|
1914
|
-
const
|
2360
|
+
const activeActions = getAcceptedActions(event2);
|
2361
|
+
const latestAction = activeActions[activeActions.length - 1];
|
2362
|
+
const registrationAction = activeActions.find(
|
2363
|
+
(a) => a.type === ActionType.REGISTER && a.status === ActionStatus.Accepted
|
2364
|
+
);
|
2365
|
+
const registrationNumber = registrationAction?.registrationNumber ?? null;
|
2366
|
+
const declaration = aggregateActionDeclarations(activeActions);
|
2367
|
+
let dateOfEvent = event2.createdAt.split("T")[0];
|
2368
|
+
if (event2.dateOfEvent) {
|
2369
|
+
const parsedDate = ZodDate.safeParse(declaration[event2.dateOfEvent.fieldId]);
|
2370
|
+
dateOfEvent = parsedDate.success ? parsedDate.data : null;
|
2371
|
+
}
|
1915
2372
|
return deepDropNulls({
|
1916
2373
|
id: event2.id,
|
1917
2374
|
type: event2.type,
|
1918
2375
|
status: getStatusFromActions(event2.actions),
|
1919
2376
|
createdAt: event2.createdAt,
|
1920
2377
|
createdBy: creationAction.createdBy,
|
1921
|
-
createdAtLocation: creationAction.createdAtLocation,
|
1922
|
-
|
1923
|
-
|
2378
|
+
createdAtLocation: creationAction.createdAtLocation ?? "",
|
2379
|
+
// @todo remove using empty string
|
2380
|
+
updatedAt: latestAction.createdAt,
|
2381
|
+
assignedTo: getAssignedUserFromActions(activeActions),
|
1924
2382
|
updatedBy: latestAction.createdBy,
|
1925
|
-
|
1926
|
-
|
2383
|
+
updatedAtLocation: event2.updatedAtLocation,
|
2384
|
+
declaration,
|
2385
|
+
trackingId: event2.trackingId,
|
2386
|
+
registrationNumber,
|
2387
|
+
updatedByUserRole: getLastUpdatedByUserRoleFromActions(event2.actions),
|
2388
|
+
dateOfEvent
|
1927
2389
|
});
|
1928
2390
|
}
|
1929
2391
|
function getCurrentEventStateWithDrafts(event2, drafts) {
|
1930
|
-
const actions = event2.actions.slice().sort();
|
1931
|
-
const
|
1932
|
-
const activeDrafts = drafts.filter(({ eventId }) => eventId === event2.id).filter(({ createdAt }) => createdAt > lastAction.createdAt).map((draft) => draft.action).flatMap((action) => {
|
2392
|
+
const actions = event2.actions.slice().sort((a, b) => a.createdAt.localeCompare(b.createdAt));
|
2393
|
+
const activeDrafts = findActiveDrafts(event2, drafts).map((draft) => draft.action).flatMap((action) => {
|
1933
2394
|
if (action.type === ActionType.REQUEST_CORRECTION) {
|
1934
2395
|
return [
|
1935
2396
|
action,
|
@@ -1949,53 +2410,52 @@ function getCurrentEventStateWithDrafts(event2, drafts) {
|
|
1949
2410
|
return getCurrentEventState(withDrafts);
|
1950
2411
|
}
|
1951
2412
|
function applyDraftsToEventIndex(eventIndex, drafts) {
|
1952
|
-
const indexedAt = eventIndex.
|
2413
|
+
const indexedAt = eventIndex.updatedAt;
|
1953
2414
|
const activeDrafts = drafts.filter(({ createdAt }) => new Date(createdAt) > new Date(indexedAt)).map((draft) => draft.action).sort();
|
1954
2415
|
if (activeDrafts.length === 0) {
|
1955
2416
|
return eventIndex;
|
1956
2417
|
}
|
1957
2418
|
return {
|
1958
2419
|
...eventIndex,
|
1959
|
-
|
1960
|
-
...eventIndex.
|
1961
|
-
...activeDrafts[activeDrafts.length - 1].
|
2420
|
+
declaration: {
|
2421
|
+
...eventIndex.declaration,
|
2422
|
+
...activeDrafts[activeDrafts.length - 1].declaration
|
1962
2423
|
}
|
1963
2424
|
};
|
1964
2425
|
}
|
1965
|
-
function
|
2426
|
+
function getAnnotationFromDrafts(drafts) {
|
2427
|
+
const actions = drafts.map((draft) => draft.action);
|
2428
|
+
const annotation = actions.reduce((ann, action) => {
|
2429
|
+
return deepMerge(ann, action.annotation ?? {});
|
2430
|
+
}, {});
|
2431
|
+
return deepDropNulls(annotation);
|
2432
|
+
}
|
2433
|
+
function getActionAnnotation({
|
1966
2434
|
event: event2,
|
1967
2435
|
actionType,
|
1968
|
-
drafts
|
2436
|
+
drafts = []
|
1969
2437
|
}) {
|
1970
|
-
const
|
2438
|
+
const activeActions = getAcceptedActions(event2);
|
2439
|
+
const action = activeActions.find(
|
2440
|
+
(activeAction) => actionType === activeAction.type
|
2441
|
+
);
|
1971
2442
|
const eventDrafts = drafts.filter((draft) => draft.eventId === event2.id);
|
1972
2443
|
const sorted = [
|
1973
2444
|
...action ? [action] : [],
|
1974
2445
|
...eventDrafts.map((draft) => draft.action)
|
1975
2446
|
].sort();
|
1976
|
-
const
|
1977
|
-
return deepMerge(
|
2447
|
+
const annotation = sorted.reduce((ann, sortedAction) => {
|
2448
|
+
return deepMerge(ann, sortedAction.annotation ?? {});
|
1978
2449
|
}, {});
|
1979
|
-
return deepDropNulls(
|
2450
|
+
return deepDropNulls(annotation);
|
1980
2451
|
}
|
1981
2452
|
|
1982
2453
|
// ../commons/src/events/defineConfig.ts
|
1983
2454
|
var defineConfig = (config) => {
|
1984
|
-
validateWorkqueueConfig(config.workqueues);
|
1985
2455
|
const input = EventConfig.parse(config);
|
1986
|
-
|
1987
|
-
return EventConfig.parse({
|
1988
|
-
...input,
|
1989
|
-
pageFields
|
1990
|
-
});
|
2456
|
+
return input;
|
1991
2457
|
};
|
1992
2458
|
|
1993
|
-
// ../commons/src/uuid.ts
|
1994
|
-
var import_uuid = require("uuid");
|
1995
|
-
function getUUID() {
|
1996
|
-
return (0, import_uuid.v4)();
|
1997
|
-
}
|
1998
|
-
|
1999
2459
|
// ../commons/src/events/transactions.ts
|
2000
2460
|
function generateTransactionId() {
|
2001
2461
|
return getUUID();
|
@@ -2008,6 +2468,16 @@ var import_lodash2 = require("lodash");
|
|
2008
2468
|
function defineConditional(schema) {
|
2009
2469
|
return schema;
|
2010
2470
|
}
|
2471
|
+
function defineFormConditional(schema) {
|
2472
|
+
const schemaWithForm = {
|
2473
|
+
type: "object",
|
2474
|
+
properties: {
|
2475
|
+
$form: schema
|
2476
|
+
},
|
2477
|
+
required: ["$form"]
|
2478
|
+
};
|
2479
|
+
return defineConditional(schemaWithForm);
|
2480
|
+
}
|
2011
2481
|
function alwaysTrue() {
|
2012
2482
|
return {};
|
2013
2483
|
}
|
@@ -2032,6 +2502,9 @@ function not(condition) {
|
|
2032
2502
|
required: []
|
2033
2503
|
});
|
2034
2504
|
}
|
2505
|
+
function never() {
|
2506
|
+
return not(alwaysTrue());
|
2507
|
+
}
|
2035
2508
|
var user = {
|
2036
2509
|
hasScope: (scope) => defineConditional({
|
2037
2510
|
type: "object",
|
@@ -2053,95 +2526,148 @@ var user = {
|
|
2053
2526
|
required: ["$user"]
|
2054
2527
|
})
|
2055
2528
|
};
|
2056
|
-
|
2057
|
-
|
2529
|
+
function createEventConditionals() {
|
2530
|
+
return {
|
2531
|
+
/**
|
2532
|
+
* Checks if the event contains a specific action type.
|
2533
|
+
* @param action - The action type to check for.
|
2534
|
+
*/
|
2535
|
+
hasAction: (action) => defineConditional({
|
2536
|
+
type: "object",
|
2537
|
+
properties: {
|
2538
|
+
$event: {
|
2539
|
+
type: "object",
|
2540
|
+
properties: {
|
2541
|
+
actions: {
|
2542
|
+
type: "array",
|
2543
|
+
contains: {
|
2544
|
+
type: "object",
|
2545
|
+
properties: {
|
2546
|
+
type: {
|
2547
|
+
const: action
|
2548
|
+
}
|
2549
|
+
},
|
2550
|
+
required: ["type"]
|
2551
|
+
}
|
2552
|
+
}
|
2553
|
+
},
|
2554
|
+
required: ["actions"]
|
2555
|
+
}
|
2556
|
+
},
|
2557
|
+
required: ["$event"]
|
2558
|
+
})
|
2559
|
+
};
|
2560
|
+
}
|
2561
|
+
function getDateFromNow(days) {
|
2562
|
+
return new Date(Date.now() - days * 24 * 60 * 60 * 1e3).toISOString().split("T")[0];
|
2563
|
+
}
|
2564
|
+
function getDateRangeToFieldReference(fieldId, comparedFieldId, clause) {
|
2565
|
+
return {
|
2058
2566
|
type: "object",
|
2059
2567
|
properties: {
|
2060
|
-
|
2061
|
-
type: "
|
2062
|
-
|
2063
|
-
|
2064
|
-
|
2065
|
-
|
2066
|
-
type: "object",
|
2067
|
-
properties: {
|
2068
|
-
type: {
|
2069
|
-
const: action
|
2070
|
-
}
|
2071
|
-
},
|
2072
|
-
required: ["type"]
|
2073
|
-
}
|
2074
|
-
}
|
2075
|
-
},
|
2076
|
-
required: ["actions"]
|
2077
|
-
}
|
2568
|
+
[fieldId]: {
|
2569
|
+
type: "string",
|
2570
|
+
format: "date",
|
2571
|
+
[clause]: { $data: `1/${comparedFieldId}` }
|
2572
|
+
},
|
2573
|
+
[comparedFieldId]: { type: "string", format: "date" }
|
2078
2574
|
},
|
2079
|
-
required: [
|
2080
|
-
}
|
2081
|
-
}
|
2082
|
-
function
|
2083
|
-
|
2575
|
+
required: [fieldId]
|
2576
|
+
};
|
2577
|
+
}
|
2578
|
+
function isFieldReference(value) {
|
2579
|
+
return typeof value === "object" && value !== null && "_fieldId" in value;
|
2580
|
+
}
|
2581
|
+
function createFieldConditionals(fieldId) {
|
2084
2582
|
const getDateRange = (date, clause) => ({
|
2085
2583
|
type: "object",
|
2086
2584
|
properties: {
|
2087
|
-
|
2088
|
-
type: "
|
2089
|
-
|
2090
|
-
|
2091
|
-
type: "string",
|
2092
|
-
format: "date",
|
2093
|
-
[clause]: date
|
2094
|
-
}
|
2095
|
-
},
|
2096
|
-
required: [fieldId]
|
2585
|
+
[fieldId]: {
|
2586
|
+
type: "string",
|
2587
|
+
format: "date",
|
2588
|
+
[clause]: date
|
2097
2589
|
}
|
2098
2590
|
},
|
2099
|
-
required: [
|
2591
|
+
required: [fieldId]
|
2100
2592
|
});
|
2101
2593
|
return {
|
2102
2594
|
isAfter: () => ({
|
2103
2595
|
days: (days) => ({
|
2104
|
-
inPast: () =>
|
2596
|
+
inPast: () => defineFormConditional(
|
2105
2597
|
getDateRange(getDateFromNow(days), "formatMinimum")
|
2106
2598
|
),
|
2107
|
-
inFuture: () =>
|
2599
|
+
inFuture: () => defineFormConditional(
|
2108
2600
|
getDateRange(getDateFromNow(-days), "formatMinimum")
|
2109
2601
|
)
|
2110
2602
|
}),
|
2111
|
-
date: (date) =>
|
2112
|
-
|
2603
|
+
date: (date) => {
|
2604
|
+
if (isFieldReference(date)) {
|
2605
|
+
const comparedFieldId = date._fieldId;
|
2606
|
+
return defineFormConditional(
|
2607
|
+
getDateRangeToFieldReference(
|
2608
|
+
fieldId,
|
2609
|
+
comparedFieldId,
|
2610
|
+
"formatMinimum"
|
2611
|
+
)
|
2612
|
+
);
|
2613
|
+
}
|
2614
|
+
return defineFormConditional(getDateRange(date, "formatMinimum"));
|
2615
|
+
},
|
2616
|
+
now: () => defineFormConditional(getDateRange(getDateFromNow(0), "formatMinimum"))
|
2113
2617
|
}),
|
2114
2618
|
isBefore: () => ({
|
2115
2619
|
days: (days) => ({
|
2116
|
-
inPast: () =>
|
2620
|
+
inPast: () => defineFormConditional(
|
2117
2621
|
getDateRange(getDateFromNow(days), "formatMaximum")
|
2118
2622
|
),
|
2119
|
-
inFuture: () =>
|
2623
|
+
inFuture: () => defineFormConditional(
|
2120
2624
|
getDateRange(getDateFromNow(-days), "formatMaximum")
|
2121
2625
|
)
|
2122
2626
|
}),
|
2123
|
-
date: (date) =>
|
2124
|
-
|
2627
|
+
date: (date) => {
|
2628
|
+
if (isFieldReference(date)) {
|
2629
|
+
const comparedFieldId = date._fieldId;
|
2630
|
+
return defineFormConditional(
|
2631
|
+
getDateRangeToFieldReference(
|
2632
|
+
fieldId,
|
2633
|
+
comparedFieldId,
|
2634
|
+
"formatMaximum"
|
2635
|
+
)
|
2636
|
+
);
|
2637
|
+
}
|
2638
|
+
return defineFormConditional(getDateRange(date, "formatMaximum"));
|
2639
|
+
},
|
2640
|
+
now: () => defineFormConditional(getDateRange(getDateFromNow(0), "formatMaximum"))
|
2125
2641
|
}),
|
2126
|
-
isEqualTo: (value) =>
|
2127
|
-
|
2128
|
-
|
2129
|
-
|
2642
|
+
isEqualTo: (value) => {
|
2643
|
+
if (isFieldReference(value)) {
|
2644
|
+
const comparedFieldId = value._fieldId;
|
2645
|
+
return defineFormConditional({
|
2130
2646
|
type: "object",
|
2131
2647
|
properties: {
|
2132
2648
|
[fieldId]: {
|
2133
|
-
|
2134
|
-
|
2135
|
-
|
2136
|
-
|
2137
|
-
const: value
|
2138
|
-
}
|
2649
|
+
type: ["string", "boolean"],
|
2650
|
+
const: { $data: `1/${comparedFieldId}` }
|
2651
|
+
},
|
2652
|
+
[comparedFieldId]: { type: ["string", "boolean"] }
|
2139
2653
|
},
|
2140
|
-
required: [fieldId]
|
2141
|
-
}
|
2142
|
-
}
|
2143
|
-
|
2144
|
-
|
2654
|
+
required: [fieldId, comparedFieldId]
|
2655
|
+
});
|
2656
|
+
}
|
2657
|
+
return defineFormConditional({
|
2658
|
+
type: "object",
|
2659
|
+
properties: {
|
2660
|
+
[fieldId]: {
|
2661
|
+
oneOf: [
|
2662
|
+
{ type: "string", const: value },
|
2663
|
+
{ type: "boolean", const: value }
|
2664
|
+
],
|
2665
|
+
const: value
|
2666
|
+
}
|
2667
|
+
},
|
2668
|
+
required: [fieldId]
|
2669
|
+
});
|
2670
|
+
},
|
2145
2671
|
/**
|
2146
2672
|
* Use case: Some fields are rendered when selection is not made, or boolean false is explicitly selected.
|
2147
2673
|
* @example field('recommender.none').isFalsy() vs not(field('recommender.none').isEqualTo(true))
|
@@ -2150,91 +2676,166 @@ function field(fieldId) {
|
|
2150
2676
|
* NOTE: For now, this only works with string, boolean, and null types. 0 is still allowed.
|
2151
2677
|
*
|
2152
2678
|
*/
|
2153
|
-
isFalsy: () =>
|
2679
|
+
isFalsy: () => defineFormConditional({
|
2154
2680
|
type: "object",
|
2155
2681
|
properties: {
|
2156
|
-
|
2157
|
-
type: "object",
|
2158
|
-
properties: {
|
2159
|
-
[fieldId]: {
|
2160
|
-
anyOf: [
|
2161
|
-
{ const: "undefined" },
|
2162
|
-
{ const: false },
|
2163
|
-
{ const: null },
|
2164
|
-
{ const: "" }
|
2165
|
-
]
|
2166
|
-
}
|
2167
|
-
},
|
2682
|
+
[fieldId]: {
|
2168
2683
|
anyOf: [
|
2169
|
-
{
|
2170
|
-
|
2171
|
-
},
|
2172
|
-
{
|
2173
|
-
not: {
|
2174
|
-
required: [fieldId]
|
2175
|
-
}
|
2176
|
-
}
|
2684
|
+
{ const: "undefined" },
|
2685
|
+
{ const: false },
|
2686
|
+
{ const: null },
|
2687
|
+
{ const: "" }
|
2177
2688
|
]
|
2178
2689
|
}
|
2179
2690
|
},
|
2180
|
-
|
2691
|
+
anyOf: [
|
2692
|
+
{
|
2693
|
+
required: [fieldId]
|
2694
|
+
},
|
2695
|
+
{
|
2696
|
+
not: {
|
2697
|
+
required: [fieldId]
|
2698
|
+
}
|
2699
|
+
}
|
2700
|
+
]
|
2701
|
+
}),
|
2702
|
+
isUndefined: () => defineFormConditional({
|
2703
|
+
type: "object",
|
2704
|
+
properties: {
|
2705
|
+
[fieldId]: {
|
2706
|
+
type: "string",
|
2707
|
+
enum: ["undefined"]
|
2708
|
+
}
|
2709
|
+
},
|
2710
|
+
not: {
|
2711
|
+
required: [fieldId]
|
2712
|
+
}
|
2713
|
+
}),
|
2714
|
+
inArray: (values) => defineFormConditional({
|
2715
|
+
type: "object",
|
2716
|
+
properties: {
|
2717
|
+
[fieldId]: {
|
2718
|
+
type: "string",
|
2719
|
+
enum: values
|
2720
|
+
}
|
2721
|
+
},
|
2722
|
+
required: [fieldId]
|
2181
2723
|
}),
|
2182
|
-
|
2724
|
+
isValidEnglishName: () => defineFormConditional({
|
2183
2725
|
type: "object",
|
2184
2726
|
properties: {
|
2185
|
-
|
2186
|
-
type: "
|
2187
|
-
|
2188
|
-
|
2189
|
-
|
2190
|
-
|
2191
|
-
|
2192
|
-
|
2193
|
-
|
2194
|
-
|
2195
|
-
|
2727
|
+
[fieldId]: {
|
2728
|
+
type: "string",
|
2729
|
+
pattern: "^[\\p{Script=Latin}0-9'._-]*(\\([\\p{Script=Latin}0-9'._-]+\\))?[\\p{Script=Latin}0-9'._-]*( [\\p{Script=Latin}0-9'._-]*(\\([\\p{Script=Latin}0-9'._-]+\\))?[\\p{Script=Latin}0-9'._-]*)*$",
|
2730
|
+
description: "Name must contain only letters, numbers, and allowed special characters ('._-). No double spaces."
|
2731
|
+
}
|
2732
|
+
},
|
2733
|
+
required: [fieldId]
|
2734
|
+
}),
|
2735
|
+
/**
|
2736
|
+
* Checks if the field value matches a given regular expression pattern.
|
2737
|
+
* @param pattern - The regular expression pattern to match the field value against.
|
2738
|
+
* @returns A JSONSchema conditional that validates the field value against the pattern.
|
2739
|
+
*/
|
2740
|
+
matches: (pattern) => defineFormConditional({
|
2741
|
+
type: "object",
|
2742
|
+
properties: {
|
2743
|
+
[fieldId]: {
|
2744
|
+
type: "string",
|
2745
|
+
pattern
|
2196
2746
|
}
|
2197
2747
|
},
|
2198
|
-
required: [
|
2748
|
+
required: [fieldId]
|
2199
2749
|
}),
|
2200
|
-
|
2750
|
+
isBetween: (min, max) => defineFormConditional({
|
2201
2751
|
type: "object",
|
2202
2752
|
properties: {
|
2203
|
-
|
2204
|
-
type: "
|
2205
|
-
|
2206
|
-
|
2207
|
-
type: "string",
|
2208
|
-
enum: values
|
2209
|
-
}
|
2210
|
-
},
|
2211
|
-
required: [fieldId]
|
2753
|
+
[fieldId]: {
|
2754
|
+
type: "number",
|
2755
|
+
minimum: min,
|
2756
|
+
maximum: max
|
2212
2757
|
}
|
2213
2758
|
},
|
2214
|
-
required: [
|
2759
|
+
required: [fieldId]
|
2760
|
+
}),
|
2761
|
+
getId: () => ({ fieldId })
|
2762
|
+
};
|
2763
|
+
}
|
2764
|
+
|
2765
|
+
// ../commons/src/field-config/field-configuration.ts
|
2766
|
+
function createFieldConfigs(fieldId) {
|
2767
|
+
const baseField = {
|
2768
|
+
fieldId,
|
2769
|
+
fieldType: "field"
|
2770
|
+
};
|
2771
|
+
return {
|
2772
|
+
/**
|
2773
|
+
* Creates a range configuration for the specified field.
|
2774
|
+
*
|
2775
|
+
* @returns An object containing the field ID and a configuration object with a type of 'RANGE'.
|
2776
|
+
*
|
2777
|
+
* @example field('age').range()
|
2778
|
+
* // {
|
2779
|
+
* // fieldId: 'age',
|
2780
|
+
* // config: { type: 'RANGE' }
|
2781
|
+
* // }
|
2782
|
+
*/
|
2783
|
+
range: () => ({
|
2784
|
+
...baseField,
|
2785
|
+
config: { type: "RANGE" }
|
2786
|
+
}),
|
2787
|
+
/**
|
2788
|
+
* Creates a configuration for exact matching of the specified field.
|
2789
|
+
* @returns An object containing the field ID and a configuration object with a type of 'EXACT'.
|
2790
|
+
* @example field('dob').exact()
|
2791
|
+
* // {
|
2792
|
+
* // fieldId: 'dob',
|
2793
|
+
* // config: { type: 'EXACT' }
|
2794
|
+
* // }
|
2795
|
+
*/
|
2796
|
+
exact: () => ({
|
2797
|
+
...baseField,
|
2798
|
+
config: { type: "EXACT" }
|
2799
|
+
}),
|
2800
|
+
/**
|
2801
|
+
* Creates a configuration for fuzzy matching of the specified field.
|
2802
|
+
* @returns An object containing the field ID and a configuration object with a type of 'EXACT'.
|
2803
|
+
* @example field('name').fuzzy()
|
2804
|
+
* // {
|
2805
|
+
* // fieldId: 'name',
|
2806
|
+
* // config: { type: 'FUZZY' }
|
2807
|
+
* // }
|
2808
|
+
*/
|
2809
|
+
fuzzy: () => ({
|
2810
|
+
...baseField,
|
2811
|
+
config: { type: "FUZZY" }
|
2215
2812
|
})
|
2216
2813
|
};
|
2217
2814
|
}
|
2218
2815
|
|
2816
|
+
// ../commons/src/events/field.ts
|
2817
|
+
function field(fieldId) {
|
2818
|
+
return {
|
2819
|
+
/**
|
2820
|
+
* @private Internal property used for field reference tracking.
|
2821
|
+
*/
|
2822
|
+
_fieldId: fieldId,
|
2823
|
+
...createFieldConditionals(fieldId),
|
2824
|
+
...createFieldConfigs(fieldId)
|
2825
|
+
};
|
2826
|
+
}
|
2827
|
+
|
2219
2828
|
// ../commons/src/fixtures/tennis-club-membership-event.ts
|
2220
|
-
var PRINT_CERTIFICATE_FORM =
|
2829
|
+
var PRINT_CERTIFICATE_FORM = defineActionForm({
|
2221
2830
|
label: {
|
2222
2831
|
id: "v2.event.tennis-club-membership.action.certificate.form.label",
|
2223
2832
|
defaultMessage: "Tennis club membership certificate collector",
|
2224
2833
|
description: "This is what this form is referred as in the system"
|
2225
2834
|
},
|
2226
|
-
version: {
|
2227
|
-
id: "1.0.0",
|
2228
|
-
label: {
|
2229
|
-
id: "v2.event.tennis-club-membership.action.certificate.form.version.1",
|
2230
|
-
defaultMessage: "Version 1",
|
2231
|
-
description: "This is the first version of the form"
|
2232
|
-
}
|
2233
|
-
},
|
2234
|
-
active: true,
|
2235
2835
|
pages: [
|
2236
2836
|
{
|
2237
2837
|
id: "collector",
|
2838
|
+
type: PageTypes.enum.FORM,
|
2238
2839
|
title: {
|
2239
2840
|
id: "v2.event.tennis-club-membership.action.certificate.form.section.who.title",
|
2240
2841
|
defaultMessage: "Print certified copy",
|
@@ -2249,7 +2850,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2249
2850
|
defaultMessage: "Requester",
|
2250
2851
|
description: "This is the label for the field"
|
2251
2852
|
},
|
2252
|
-
type:
|
2853
|
+
type: FieldType.SELECT,
|
2253
2854
|
options: [
|
2254
2855
|
{
|
2255
2856
|
value: "INFORMANT",
|
@@ -2326,7 +2927,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2326
2927
|
defaultMessage: "Select Type of ID",
|
2327
2928
|
description: "This is the label for selecting the type of ID"
|
2328
2929
|
},
|
2329
|
-
type:
|
2930
|
+
type: FieldType.SELECT,
|
2330
2931
|
options: [
|
2331
2932
|
{
|
2332
2933
|
value: "PASSPORT",
|
@@ -2427,7 +3028,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2427
3028
|
defaultMessage: "Passport Details",
|
2428
3029
|
description: "Field for entering Passport details"
|
2429
3030
|
},
|
2430
|
-
type:
|
3031
|
+
type: FieldType.TEXT
|
2431
3032
|
},
|
2432
3033
|
{
|
2433
3034
|
id: "collector.DRIVING_LICENSE.details",
|
@@ -2478,7 +3079,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2478
3079
|
defaultMessage: "Driving License Details",
|
2479
3080
|
description: "Field for entering Driving License details"
|
2480
3081
|
},
|
2481
|
-
type:
|
3082
|
+
type: FieldType.TEXT
|
2482
3083
|
},
|
2483
3084
|
{
|
2484
3085
|
id: "collector.REFUGEE_NUMBER.details",
|
@@ -2529,7 +3130,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2529
3130
|
defaultMessage: "Refugee Number Details",
|
2530
3131
|
description: "Field for entering Refugee Number details"
|
2531
3132
|
},
|
2532
|
-
type:
|
3133
|
+
type: FieldType.TEXT
|
2533
3134
|
},
|
2534
3135
|
{
|
2535
3136
|
id: "collector.ALIEN_NUMBER.details",
|
@@ -2580,7 +3181,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2580
3181
|
defaultMessage: "Alien Number Details",
|
2581
3182
|
description: "Field for entering Alien Number details"
|
2582
3183
|
},
|
2583
|
-
type:
|
3184
|
+
type: FieldType.TEXT
|
2584
3185
|
},
|
2585
3186
|
{
|
2586
3187
|
id: "collector.OTHER.idTypeOther",
|
@@ -2631,7 +3232,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2631
3232
|
defaultMessage: "Other ID Type (if applicable)",
|
2632
3233
|
description: 'Field for entering ID type if "Other" is selected'
|
2633
3234
|
},
|
2634
|
-
type:
|
3235
|
+
type: FieldType.TEXT
|
2635
3236
|
},
|
2636
3237
|
{
|
2637
3238
|
id: "collector.OTHER.firstName",
|
@@ -2682,7 +3283,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2682
3283
|
defaultMessage: "First Name",
|
2683
3284
|
description: "This is the label for the first name field"
|
2684
3285
|
},
|
2685
|
-
type:
|
3286
|
+
type: FieldType.TEXT
|
2686
3287
|
},
|
2687
3288
|
{
|
2688
3289
|
id: "collector.OTHER.lastName",
|
@@ -2733,7 +3334,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2733
3334
|
defaultMessage: "Last Name",
|
2734
3335
|
description: "This is the label for the last name field"
|
2735
3336
|
},
|
2736
|
-
type:
|
3337
|
+
type: FieldType.TEXT
|
2737
3338
|
},
|
2738
3339
|
{
|
2739
3340
|
id: "collector.OTHER.relationshipToMember",
|
@@ -2784,7 +3385,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2784
3385
|
defaultMessage: "Relationship to Member",
|
2785
3386
|
description: "This is the label for the relationship to member field"
|
2786
3387
|
},
|
2787
|
-
type:
|
3388
|
+
type: FieldType.TEXT
|
2788
3389
|
},
|
2789
3390
|
{
|
2790
3391
|
id: "collector.OTHER.signedAffidavit",
|
@@ -2835,66 +3436,88 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2835
3436
|
defaultMessage: "Signed Affidavit (Optional)",
|
2836
3437
|
description: "This is the label for uploading a signed affidavit"
|
2837
3438
|
},
|
2838
|
-
type:
|
3439
|
+
type: FieldType.FILE
|
2839
3440
|
}
|
2840
3441
|
]
|
2841
|
-
}
|
2842
|
-
],
|
2843
|
-
review: {
|
2844
|
-
title: {
|
2845
|
-
id: "v2.event.tennis-club-membership.action.certificate.form.review.title",
|
2846
|
-
defaultMessage: "Member certificate collector for {firstname} {surname}",
|
2847
|
-
description: "Title of the form to show in review page"
|
2848
3442
|
},
|
2849
|
-
|
2850
|
-
|
2851
|
-
|
2852
|
-
|
2853
|
-
|
2854
|
-
|
2855
|
-
|
2856
|
-
|
2857
|
-
|
2858
|
-
|
2859
|
-
|
2860
|
-
|
2861
|
-
|
2862
|
-
|
2863
|
-
|
2864
|
-
|
3443
|
+
{
|
3444
|
+
id: "collector.identity.verify",
|
3445
|
+
type: PageTypes.enum.VERIFICATION,
|
3446
|
+
conditional: field("collector.requesterId").isEqualTo("INFORMANT"),
|
3447
|
+
title: {
|
3448
|
+
id: "event.tennis-club-membership.action.print.verifyIdentity",
|
3449
|
+
defaultMessage: "Verify their identity",
|
3450
|
+
description: "This is the title of the section"
|
3451
|
+
},
|
3452
|
+
fields: [],
|
3453
|
+
actions: {
|
3454
|
+
verify: {
|
3455
|
+
label: {
|
3456
|
+
defaultMessage: "Verified",
|
3457
|
+
description: "This is the label for the verification button",
|
3458
|
+
id: "v2.event.tennis-club-membership.action.certificate.form.verify"
|
3459
|
+
}
|
3460
|
+
},
|
3461
|
+
cancel: {
|
3462
|
+
label: {
|
3463
|
+
defaultMessage: "Identity does not match",
|
3464
|
+
description: "This is the label for the verification cancellation button",
|
3465
|
+
id: "v2.event.tennis-club-membership.action.certificate.form.cancel"
|
3466
|
+
},
|
3467
|
+
confirmation: {
|
3468
|
+
title: {
|
3469
|
+
defaultMessage: "Print without proof of ID?",
|
3470
|
+
description: "This is the title for the verification cancellation modal",
|
3471
|
+
id: "v2.event.tennis-club-membership.action.certificate.form.cancel.confirmation.title"
|
3472
|
+
},
|
3473
|
+
body: {
|
3474
|
+
defaultMessage: "Please be aware that if you proceed, you will be responsible for issuing a certificate without the necessary proof of ID from the collector",
|
3475
|
+
description: "This is the body for the verification cancellation modal",
|
3476
|
+
id: "v2.event.tennis-club-membership.action.certificate.form.cancel.confirmation.body"
|
3477
|
+
}
|
3478
|
+
}
|
3479
|
+
}
|
3480
|
+
}
|
2865
3481
|
}
|
3482
|
+
]
|
3483
|
+
});
|
3484
|
+
var TENNIS_CLUB_DECLARATION_REVIEW = {
|
3485
|
+
title: {
|
3486
|
+
id: "v2.event.tennis-club-membership.action.declare.form.review.title",
|
3487
|
+
defaultMessage: "{applicant.firstname, select, __EMPTY__ {Member declaration} other {{applicant.surname, select, __EMPTY__ {Member declaration} other {Member declaration for {applicant.firstname} {applicant.surname}}}}}",
|
3488
|
+
description: "Title of the review page"
|
2866
3489
|
},
|
2867
|
-
|
2868
|
-
|
2869
|
-
id: "
|
2870
|
-
|
2871
|
-
|
3490
|
+
fields: [
|
3491
|
+
{
|
3492
|
+
id: "review.comment",
|
3493
|
+
type: FieldType.TEXTAREA,
|
3494
|
+
label: {
|
3495
|
+
defaultMessage: "Comment",
|
3496
|
+
id: "v2.event.birth.action.declare.form.review.comment.label",
|
3497
|
+
description: "Label for the comment field in the review section"
|
3498
|
+
}
|
2872
3499
|
},
|
2873
|
-
|
2874
|
-
|
2875
|
-
|
2876
|
-
|
2877
|
-
|
2878
|
-
|
2879
|
-
|
2880
|
-
description: "Label for the comment field in the review section"
|
2881
|
-
}
|
3500
|
+
{
|
3501
|
+
type: FieldType.SIGNATURE,
|
3502
|
+
id: "review.signature",
|
3503
|
+
label: {
|
3504
|
+
defaultMessage: "Signature of informant",
|
3505
|
+
id: "v2.event.birth.action.declare.form.review.signature.label",
|
3506
|
+
description: "Label for the signature field in the review section"
|
2882
3507
|
},
|
2883
|
-
{
|
2884
|
-
|
2885
|
-
|
2886
|
-
|
2887
|
-
defaultMessage: "Signature of informant",
|
2888
|
-
id: "v2.event.birth.action.declare.form.review.signature.label",
|
2889
|
-
description: "Label for the signature field in the review section"
|
2890
|
-
},
|
2891
|
-
signaturePromptLabel: {
|
2892
|
-
id: "v2.signature.upload.modal.title",
|
2893
|
-
defaultMessage: "Draw signature",
|
2894
|
-
description: "Title for the modal to draw signature"
|
2895
|
-
}
|
3508
|
+
signaturePromptLabel: {
|
3509
|
+
id: "v2.signature.upload.modal.title",
|
3510
|
+
defaultMessage: "Draw signature",
|
3511
|
+
description: "Title for the modal to draw signature"
|
2896
3512
|
}
|
2897
|
-
|
3513
|
+
}
|
3514
|
+
]
|
3515
|
+
};
|
3516
|
+
var TENNIS_CLUB_DECLARATION_FORM = defineDeclarationForm({
|
3517
|
+
label: {
|
3518
|
+
id: "v2.event.tennis-club-membership.action.declare.form.label",
|
3519
|
+
defaultMessage: "Tennis club membership application",
|
3520
|
+
description: "This is what this form is referred as in the system"
|
2898
3521
|
},
|
2899
3522
|
pages: [
|
2900
3523
|
{
|
@@ -2907,7 +3530,7 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
2907
3530
|
fields: [
|
2908
3531
|
{
|
2909
3532
|
id: "applicant.firstname",
|
2910
|
-
type:
|
3533
|
+
type: FieldType.TEXT,
|
2911
3534
|
required: true,
|
2912
3535
|
conditionals: [],
|
2913
3536
|
label: {
|
@@ -2918,7 +3541,7 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
2918
3541
|
},
|
2919
3542
|
{
|
2920
3543
|
id: "applicant.surname",
|
2921
|
-
type:
|
3544
|
+
type: FieldType.TEXT,
|
2922
3545
|
required: true,
|
2923
3546
|
conditionals: [],
|
2924
3547
|
label: {
|
@@ -2940,9 +3563,8 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
2940
3563
|
},
|
2941
3564
|
{
|
2942
3565
|
id: "applicant.dob",
|
2943
|
-
type:
|
3566
|
+
type: FieldType.DATE,
|
2944
3567
|
required: true,
|
2945
|
-
conditionals: [],
|
2946
3568
|
validation: [
|
2947
3569
|
{
|
2948
3570
|
message: {
|
@@ -2953,15 +3575,53 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
2953
3575
|
validator: field("applicant.dob").isBefore().now()
|
2954
3576
|
}
|
2955
3577
|
],
|
3578
|
+
conditionals: [
|
3579
|
+
{
|
3580
|
+
type: ConditionalType.SHOW,
|
3581
|
+
conditional: field("applicant.dobUnknown").isFalsy()
|
3582
|
+
}
|
3583
|
+
],
|
2956
3584
|
label: {
|
2957
3585
|
defaultMessage: "Applicant's date of birth",
|
2958
3586
|
description: "This is the label for the field",
|
2959
3587
|
id: "v2.event.tennis-club-membership.action.declare.form.section.who.field.dob.label"
|
2960
3588
|
}
|
2961
3589
|
},
|
3590
|
+
{
|
3591
|
+
id: "applicant.dobUnknown",
|
3592
|
+
type: FieldType.CHECKBOX,
|
3593
|
+
required: false,
|
3594
|
+
label: {
|
3595
|
+
defaultMessage: "Exact date of birth unknown",
|
3596
|
+
description: "This is the label for the field",
|
3597
|
+
id: "v2.event.tennis-club-membership.action.declare.form.section.who.field.dobUnknown.label"
|
3598
|
+
},
|
3599
|
+
conditionals: [
|
3600
|
+
{
|
3601
|
+
type: ConditionalType.DISPLAY_ON_REVIEW,
|
3602
|
+
conditional: never()
|
3603
|
+
}
|
3604
|
+
]
|
3605
|
+
},
|
3606
|
+
{
|
3607
|
+
id: "applicant.age",
|
3608
|
+
type: FieldType.NUMBER,
|
3609
|
+
required: true,
|
3610
|
+
label: {
|
3611
|
+
defaultMessage: "Age of tennis-member",
|
3612
|
+
description: "This is the label for the field",
|
3613
|
+
id: "v2.event.tennis-club-membership.action.declare.form.section.who.field.age.label"
|
3614
|
+
},
|
3615
|
+
conditionals: [
|
3616
|
+
{
|
3617
|
+
type: ConditionalType.SHOW,
|
3618
|
+
conditional: field("applicant.dobUnknown").isEqualTo(true)
|
3619
|
+
}
|
3620
|
+
]
|
3621
|
+
},
|
2962
3622
|
{
|
2963
3623
|
id: "applicant.image",
|
2964
|
-
type:
|
3624
|
+
type: FieldType.FILE,
|
2965
3625
|
required: false,
|
2966
3626
|
label: {
|
2967
3627
|
defaultMessage: "Applicant's profile picture",
|
@@ -2982,6 +3642,27 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
2982
3642
|
}
|
2983
3643
|
]
|
2984
3644
|
},
|
3645
|
+
{
|
3646
|
+
id: "senior-pass",
|
3647
|
+
conditional: field("applicant.dob").isBefore().date("1950-01-01"),
|
3648
|
+
title: {
|
3649
|
+
id: "v2.event.tennis-club-membership.action.declare.form.section.senior-pass.title",
|
3650
|
+
defaultMessage: "Assign senior pass for applicant",
|
3651
|
+
description: "This is the title of the section"
|
3652
|
+
},
|
3653
|
+
fields: [
|
3654
|
+
{
|
3655
|
+
id: "senior-pass.id",
|
3656
|
+
type: FieldType.TEXT,
|
3657
|
+
required: true,
|
3658
|
+
label: {
|
3659
|
+
defaultMessage: "Senior pass ID",
|
3660
|
+
description: "This is the label for the field",
|
3661
|
+
id: "v2.event.tennis-club-membership.action.declare.form.section.senior-pass.field.id.label"
|
3662
|
+
}
|
3663
|
+
}
|
3664
|
+
]
|
3665
|
+
},
|
2985
3666
|
{
|
2986
3667
|
id: "recommender",
|
2987
3668
|
title: {
|
@@ -3003,7 +3684,7 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
3003
3684
|
},
|
3004
3685
|
{
|
3005
3686
|
id: "recommender.firstname",
|
3006
|
-
type:
|
3687
|
+
type: FieldType.TEXT,
|
3007
3688
|
required: true,
|
3008
3689
|
conditionals: [
|
3009
3690
|
{
|
@@ -3019,7 +3700,7 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
3019
3700
|
},
|
3020
3701
|
{
|
3021
3702
|
id: "recommender.surname",
|
3022
|
-
type:
|
3703
|
+
type: FieldType.TEXT,
|
3023
3704
|
required: true,
|
3024
3705
|
conditionals: [
|
3025
3706
|
{
|
@@ -3035,7 +3716,7 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
3035
3716
|
},
|
3036
3717
|
{
|
3037
3718
|
id: "recommender.id",
|
3038
|
-
type:
|
3719
|
+
type: FieldType.TEXT,
|
3039
3720
|
required: true,
|
3040
3721
|
conditionals: [
|
3041
3722
|
{
|
@@ -3060,20 +3741,12 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3060
3741
|
description: "This is what this event is referred as in the system",
|
3061
3742
|
id: "event.tennis-club-membership.label"
|
3062
3743
|
},
|
3744
|
+
title: {
|
3745
|
+
defaultMessage: "{applicant.firstname} {applicant.surname}",
|
3746
|
+
description: "This is the title of the summary",
|
3747
|
+
id: "v2.event.tennis-club-membership.title"
|
3748
|
+
},
|
3063
3749
|
summary: {
|
3064
|
-
title: {
|
3065
|
-
id: "event.tennis-club-membership.summary.title",
|
3066
|
-
label: {
|
3067
|
-
defaultMessage: "{applicant.firstname} {applicant.surname}",
|
3068
|
-
description: "This is the title of the summary",
|
3069
|
-
id: "v2.event.tennis-club-membership.summary.title"
|
3070
|
-
},
|
3071
|
-
emptyValueMessage: {
|
3072
|
-
defaultMessage: "Membership application",
|
3073
|
-
description: "This is the message shown when the applicant name is missing",
|
3074
|
-
id: "event.tennis-club-membership.summary.title.empty"
|
3075
|
-
}
|
3076
|
-
},
|
3077
3750
|
fields: [
|
3078
3751
|
{
|
3079
3752
|
id: "applicant.firstname",
|
@@ -3113,28 +3786,6 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3113
3786
|
}
|
3114
3787
|
]
|
3115
3788
|
},
|
3116
|
-
workqueues: [
|
3117
|
-
{
|
3118
|
-
id: "all",
|
3119
|
-
filters: []
|
3120
|
-
},
|
3121
|
-
{
|
3122
|
-
id: "ready-for-review",
|
3123
|
-
filters: [
|
3124
|
-
{
|
3125
|
-
status: ["DECLARED"]
|
3126
|
-
}
|
3127
|
-
]
|
3128
|
-
},
|
3129
|
-
{
|
3130
|
-
id: "registered",
|
3131
|
-
filters: [
|
3132
|
-
{
|
3133
|
-
status: ["REGISTERED"]
|
3134
|
-
}
|
3135
|
-
]
|
3136
|
-
}
|
3137
|
-
],
|
3138
3789
|
actions: [
|
3139
3790
|
{
|
3140
3791
|
type: ActionType.DECLARE,
|
@@ -3143,7 +3794,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3143
3794
|
description: "This is shown as the action name anywhere the user can trigger the action from",
|
3144
3795
|
id: "event.tennis-club-membership.action.declare.label"
|
3145
3796
|
},
|
3146
|
-
|
3797
|
+
review: TENNIS_CLUB_DECLARATION_REVIEW
|
3147
3798
|
},
|
3148
3799
|
{
|
3149
3800
|
type: ActionType.VALIDATE,
|
@@ -3152,7 +3803,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3152
3803
|
description: "This is shown as the action name anywhere the user can trigger the action from",
|
3153
3804
|
id: "event.tennis-club-membership.action.validate.label"
|
3154
3805
|
},
|
3155
|
-
|
3806
|
+
review: TENNIS_CLUB_DECLARATION_REVIEW
|
3156
3807
|
},
|
3157
3808
|
{
|
3158
3809
|
type: ActionType.REGISTER,
|
@@ -3161,7 +3812,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3161
3812
|
description: "This is shown as the action name anywhere the user can trigger the action from",
|
3162
3813
|
id: "event.tennis-club-membership.action.register.label"
|
3163
3814
|
},
|
3164
|
-
|
3815
|
+
review: TENNIS_CLUB_DECLARATION_REVIEW
|
3165
3816
|
},
|
3166
3817
|
{
|
3167
3818
|
type: ActionType.REQUEST_CORRECTION,
|
@@ -3170,10 +3821,10 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3170
3821
|
description: "This is shown as the action name anywhere the user can trigger the action from",
|
3171
3822
|
id: "event.tennis-club-membership.action.correction.request.label"
|
3172
3823
|
},
|
3173
|
-
forms: [TENNIS_CLUB_FORM],
|
3174
3824
|
onboardingForm: [
|
3175
3825
|
{
|
3176
3826
|
id: "correction-requester",
|
3827
|
+
type: PageTypes.enum.FORM,
|
3177
3828
|
title: {
|
3178
3829
|
id: "event.tennis-club-membership.action.requestCorrection.form.section.corrector",
|
3179
3830
|
defaultMessage: "Correction requester",
|
@@ -3237,6 +3888,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3237
3888
|
},
|
3238
3889
|
{
|
3239
3890
|
id: "identity-check",
|
3891
|
+
type: PageTypes.enum.FORM,
|
3240
3892
|
title: {
|
3241
3893
|
id: "event.tennis-club-membership.action.requestCorrection.form.section.verify",
|
3242
3894
|
defaultMessage: "Verify their identity",
|
@@ -3279,6 +3931,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3279
3931
|
additionalDetailsForm: [
|
3280
3932
|
{
|
3281
3933
|
id: "correction-request.supporting-documents",
|
3934
|
+
type: PageTypes.enum.FORM,
|
3282
3935
|
title: {
|
3283
3936
|
id: "event.tennis-club-membership.action.requestCorrection.form.section.verify",
|
3284
3937
|
defaultMessage: "Upload supporting documents",
|
@@ -3296,7 +3949,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3296
3949
|
},
|
3297
3950
|
{
|
3298
3951
|
id: "correction.supportingDocs",
|
3299
|
-
type:
|
3952
|
+
type: FieldType.FILE,
|
3300
3953
|
label: {
|
3301
3954
|
id: "correction.corrector.title",
|
3302
3955
|
defaultMessage: "Upload supporting documents",
|
@@ -3340,6 +3993,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3340
3993
|
},
|
3341
3994
|
{
|
3342
3995
|
id: "correction-request.additional-details",
|
3996
|
+
type: PageTypes.enum.FORM,
|
3343
3997
|
title: {
|
3344
3998
|
id: "event.tennis-club-membership.action.requestCorrection.form.section.corrector",
|
3345
3999
|
defaultMessage: "Reason for correction",
|
@@ -3348,7 +4002,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3348
4002
|
fields: [
|
3349
4003
|
{
|
3350
4004
|
id: "correction.request.reason",
|
3351
|
-
type:
|
4005
|
+
type: FieldType.TEXT,
|
3352
4006
|
label: {
|
3353
4007
|
id: "correction.reason.title",
|
3354
4008
|
defaultMessage: "Reason for correction?",
|
@@ -3361,7 +4015,6 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3361
4015
|
},
|
3362
4016
|
{
|
3363
4017
|
type: ActionType.APPROVE_CORRECTION,
|
3364
|
-
forms: [TENNIS_CLUB_FORM],
|
3365
4018
|
label: {
|
3366
4019
|
defaultMessage: "Approve correction",
|
3367
4020
|
description: "This is shown as the action name anywhere the user can trigger the action from",
|
@@ -3375,7 +4028,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3375
4028
|
defaultMessage: "Print certificate",
|
3376
4029
|
description: "This is shown as the action name anywhere the user can trigger the action from"
|
3377
4030
|
},
|
3378
|
-
|
4031
|
+
printForm: PRINT_CERTIFICATE_FORM,
|
3379
4032
|
conditionals: [
|
3380
4033
|
{
|
3381
4034
|
type: "SHOW",
|
@@ -3415,6 +4068,22 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3415
4068
|
})
|
3416
4069
|
}
|
3417
4070
|
]
|
4071
|
+
},
|
4072
|
+
{
|
4073
|
+
type: ActionType.ARCHIVE,
|
4074
|
+
label: {
|
4075
|
+
id: "v2.event.tennis-club-membership.action.archive.label",
|
4076
|
+
defaultMessage: "Archive",
|
4077
|
+
description: "This is shown as the action name anywhere the user can trigger the action from"
|
4078
|
+
}
|
4079
|
+
},
|
4080
|
+
{
|
4081
|
+
type: ActionType.REJECT,
|
4082
|
+
label: {
|
4083
|
+
id: "v2.event.tennis-club-membership.action.reject.label",
|
4084
|
+
defaultMessage: "Reject",
|
4085
|
+
description: "This is shown as the action name anywhere the user can trigger the action from"
|
4086
|
+
}
|
3418
4087
|
}
|
3419
4088
|
],
|
3420
4089
|
advancedSearch: [
|
@@ -3424,26 +4093,55 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3424
4093
|
description: "This is what this event is referred as in the system",
|
3425
4094
|
id: "v2.event.tennis-club-membership.search"
|
3426
4095
|
},
|
3427
|
-
fields: [
|
3428
|
-
{
|
3429
|
-
fieldId: "applicant.dob"
|
3430
|
-
}
|
3431
|
-
]
|
4096
|
+
fields: [field("applicant.dob").exact()]
|
3432
4097
|
}
|
3433
|
-
]
|
4098
|
+
],
|
4099
|
+
declaration: TENNIS_CLUB_DECLARATION_FORM
|
3434
4100
|
});
|
3435
4101
|
|
3436
4102
|
// ../commons/src/events/test.utils.ts
|
3437
|
-
function
|
3438
|
-
|
3439
|
-
const data = fields.reduce(
|
4103
|
+
function fieldConfigsToActionPayload(fields) {
|
4104
|
+
return fields.reduce(
|
3440
4105
|
(acc, field2, i) => ({
|
3441
4106
|
...acc,
|
3442
4107
|
[field2.id]: mapFieldTypeToMockValue(field2, i)
|
3443
4108
|
}),
|
3444
4109
|
{}
|
3445
4110
|
);
|
3446
|
-
|
4111
|
+
}
|
4112
|
+
function generateActionDeclarationInput(configuration, action) {
|
4113
|
+
const parsed = DeclarationUpdateActions.safeParse(action);
|
4114
|
+
if (parsed.success) {
|
4115
|
+
const fields = getDeclarationFields(configuration);
|
4116
|
+
const declarationConfig = getDeclaration(configuration);
|
4117
|
+
const declaration = fieldConfigsToActionPayload(fields);
|
4118
|
+
return omitHiddenPaginatedFields(declarationConfig, declaration);
|
4119
|
+
}
|
4120
|
+
console.warn(`${action} is not a declaration action. Setting data as {}.`);
|
4121
|
+
return {};
|
4122
|
+
}
|
4123
|
+
function generateActionAnnotationInput(configuration, action) {
|
4124
|
+
const actionConfig = configuration.actions.find(
|
4125
|
+
(ac) => ac.type === action
|
4126
|
+
);
|
4127
|
+
const annotationFields = actionConfig ? getActionAnnotationFields(actionConfig) : [];
|
4128
|
+
const annotation = fieldConfigsToActionPayload(annotationFields);
|
4129
|
+
const visibleVerificationPageIds = getVisibleVerificationPageIds(
|
4130
|
+
findRecordActionPages(configuration, action),
|
4131
|
+
annotation
|
4132
|
+
);
|
4133
|
+
const visiblePageVerificationMap = visibleVerificationPageIds.reduce(
|
4134
|
+
(acc, pageId) => ({
|
4135
|
+
...acc,
|
4136
|
+
[pageId]: true
|
4137
|
+
}),
|
4138
|
+
{}
|
4139
|
+
);
|
4140
|
+
const fieldBasedPayload = omitHiddenFields(annotationFields, annotation);
|
4141
|
+
return {
|
4142
|
+
...fieldBasedPayload,
|
4143
|
+
...visiblePageVerificationMap
|
4144
|
+
};
|
3447
4145
|
}
|
3448
4146
|
var eventPayloadGenerator = {
|
3449
4147
|
create: (input = {}) => ({
|
@@ -3455,27 +4153,31 @@ var eventPayloadGenerator = {
|
|
3455
4153
|
type: input.type ?? "TENNIS_CLUB_MEMBERSHIP",
|
3456
4154
|
id
|
3457
4155
|
}),
|
3458
|
-
draft: (eventId, input = {}) => (0, import_lodash2.merge)(
|
4156
|
+
draft: ({ eventId, actionType }, input = {}) => (0, import_lodash2.merge)(
|
3459
4157
|
{
|
3460
4158
|
id: getUUID(),
|
3461
4159
|
eventId,
|
3462
4160
|
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
3463
4161
|
transactionId: getUUID(),
|
3464
4162
|
action: {
|
3465
|
-
|
3466
|
-
|
4163
|
+
transactionId: getUUID(),
|
4164
|
+
type: actionType,
|
4165
|
+
status: ActionStatus.Accepted,
|
4166
|
+
declaration: {
|
3467
4167
|
"applicant.firstname": "Max",
|
3468
4168
|
"applicant.surname": "McLaren",
|
3469
4169
|
"applicant.dob": "2020-01-02",
|
3470
4170
|
"recommender.none": true
|
3471
4171
|
},
|
3472
|
-
|
4172
|
+
annotation: {
|
3473
4173
|
"correction.requester.relationship": "ANOTHER_AGENT",
|
3474
4174
|
"correction.request.reason": "Child's name was incorrect"
|
3475
4175
|
},
|
3476
4176
|
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
3477
4177
|
createdBy: "@todo",
|
3478
|
-
|
4178
|
+
createdByRole: "@todo",
|
4179
|
+
createdAtLocation: "@todo",
|
4180
|
+
updatedAtLocation: "@todo"
|
3479
4181
|
}
|
3480
4182
|
},
|
3481
4183
|
input
|
@@ -3484,41 +4186,104 @@ var eventPayloadGenerator = {
|
|
3484
4186
|
declare: (eventId, input = {}) => ({
|
3485
4187
|
type: ActionType.DECLARE,
|
3486
4188
|
transactionId: input.transactionId ?? getUUID(),
|
3487
|
-
|
4189
|
+
declaration: input.declaration ?? generateActionDeclarationInput(
|
4190
|
+
tennisClubMembershipEvent,
|
4191
|
+
ActionType.DECLARE
|
4192
|
+
),
|
4193
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
4194
|
+
tennisClubMembershipEvent,
|
4195
|
+
ActionType.DECLARE
|
4196
|
+
),
|
3488
4197
|
eventId
|
3489
4198
|
}),
|
4199
|
+
/**
|
4200
|
+
* Notify allows sending incomplete data. Think it as 'partial declare' for now.
|
4201
|
+
*/
|
4202
|
+
notify: (eventId, input = {}) => {
|
4203
|
+
let declaration = input.declaration;
|
4204
|
+
if (!declaration) {
|
4205
|
+
const partialDeclaration = (0, import_lodash2.omitBy)(
|
4206
|
+
generateActionDeclarationInput(
|
4207
|
+
tennisClubMembershipEvent,
|
4208
|
+
ActionType.DECLARE
|
4209
|
+
),
|
4210
|
+
import_lodash2.isString
|
4211
|
+
);
|
4212
|
+
declaration = partialDeclaration;
|
4213
|
+
}
|
4214
|
+
return {
|
4215
|
+
type: ActionType.NOTIFY,
|
4216
|
+
transactionId: input.transactionId ?? getUUID(),
|
4217
|
+
declaration,
|
4218
|
+
eventId
|
4219
|
+
};
|
4220
|
+
},
|
3490
4221
|
validate: (eventId, input = {}) => ({
|
3491
4222
|
type: ActionType.VALIDATE,
|
3492
4223
|
transactionId: input.transactionId ?? getUUID(),
|
3493
|
-
|
4224
|
+
declaration: input.declaration ?? generateActionDeclarationInput(
|
4225
|
+
tennisClubMembershipEvent,
|
4226
|
+
ActionType.VALIDATE
|
4227
|
+
),
|
4228
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
4229
|
+
tennisClubMembershipEvent,
|
4230
|
+
ActionType.VALIDATE
|
4231
|
+
),
|
3494
4232
|
duplicates: [],
|
3495
4233
|
eventId
|
3496
4234
|
}),
|
4235
|
+
assign: (eventId, input = {}) => ({
|
4236
|
+
type: ActionType.ASSIGN,
|
4237
|
+
transactionId: input.transactionId ?? getUUID(),
|
4238
|
+
declaration: {},
|
4239
|
+
assignedTo: input.assignedTo ?? getUUID(),
|
4240
|
+
eventId
|
4241
|
+
}),
|
4242
|
+
unassign: (eventId, input = {}) => ({
|
4243
|
+
type: ActionType.UNASSIGN,
|
4244
|
+
transactionId: input.transactionId ?? getUUID(),
|
4245
|
+
declaration: {},
|
4246
|
+
assignedTo: null,
|
4247
|
+
eventId
|
4248
|
+
}),
|
3497
4249
|
archive: (eventId, input = {}, isDuplicate) => ({
|
3498
|
-
type: ActionType.
|
4250
|
+
type: ActionType.ARCHIVE,
|
3499
4251
|
transactionId: input.transactionId ?? getUUID(),
|
3500
|
-
|
3501
|
-
|
4252
|
+
declaration: {},
|
4253
|
+
// @TODO: Check whether generator is needed?
|
4254
|
+
annotation: { isDuplicate: isDuplicate ?? false },
|
3502
4255
|
duplicates: [],
|
3503
4256
|
eventId
|
3504
4257
|
}),
|
3505
4258
|
reject: (eventId, input = {}) => ({
|
3506
4259
|
type: ActionType.REJECT,
|
3507
4260
|
transactionId: input.transactionId ?? getUUID(),
|
3508
|
-
|
4261
|
+
declaration: {},
|
4262
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
4263
|
+
tennisClubMembershipEvent,
|
4264
|
+
ActionType.REJECT
|
4265
|
+
),
|
3509
4266
|
duplicates: [],
|
3510
4267
|
eventId
|
3511
4268
|
}),
|
3512
4269
|
register: (eventId, input = {}) => ({
|
3513
4270
|
type: ActionType.REGISTER,
|
3514
4271
|
transactionId: input.transactionId ?? getUUID(),
|
3515
|
-
|
4272
|
+
declaration: input.declaration ?? generateActionDeclarationInput(
|
4273
|
+
tennisClubMembershipEvent,
|
4274
|
+
ActionType.REGISTER
|
4275
|
+
),
|
4276
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
4277
|
+
tennisClubMembershipEvent,
|
4278
|
+
ActionType.REGISTER
|
4279
|
+
),
|
3516
4280
|
eventId
|
3517
4281
|
}),
|
3518
4282
|
printCertificate: (eventId, input = {}) => ({
|
3519
4283
|
type: ActionType.PRINT_CERTIFICATE,
|
3520
4284
|
transactionId: input.transactionId ?? getUUID(),
|
3521
|
-
|
4285
|
+
declaration: {},
|
4286
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
3522
4287
|
tennisClubMembershipEvent,
|
3523
4288
|
ActionType.PRINT_CERTIFICATE
|
3524
4289
|
),
|
@@ -3528,17 +4293,21 @@ var eventPayloadGenerator = {
|
|
3528
4293
|
request: (eventId, input = {}) => ({
|
3529
4294
|
type: ActionType.REQUEST_CORRECTION,
|
3530
4295
|
transactionId: input.transactionId ?? getUUID(),
|
3531
|
-
|
4296
|
+
declaration: input.declaration ?? generateActionDeclarationInput(
|
4297
|
+
tennisClubMembershipEvent,
|
4298
|
+
ActionType.REQUEST_CORRECTION
|
4299
|
+
),
|
4300
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
3532
4301
|
tennisClubMembershipEvent,
|
3533
4302
|
ActionType.REQUEST_CORRECTION
|
3534
4303
|
),
|
3535
|
-
metadata: {},
|
3536
4304
|
eventId
|
3537
4305
|
}),
|
3538
4306
|
approve: (eventId, requestId, input = {}) => ({
|
3539
4307
|
type: ActionType.APPROVE_CORRECTION,
|
3540
4308
|
transactionId: input.transactionId ?? getUUID(),
|
3541
|
-
|
4309
|
+
declaration: {},
|
4310
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
3542
4311
|
tennisClubMembershipEvent,
|
3543
4312
|
ActionType.APPROVE_CORRECTION
|
3544
4313
|
),
|
@@ -3548,7 +4317,8 @@ var eventPayloadGenerator = {
|
|
3548
4317
|
reject: (eventId, requestId, input = {}) => ({
|
3549
4318
|
type: ActionType.REJECT_CORRECTION,
|
3550
4319
|
transactionId: input.transactionId ?? getUUID(),
|
3551
|
-
|
4320
|
+
declaration: {},
|
4321
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
3552
4322
|
tennisClubMembershipEvent,
|
3553
4323
|
ActionType.REJECT_CORRECTION
|
3554
4324
|
),
|
@@ -3564,24 +4334,34 @@ function generateActionDocument({
|
|
3564
4334
|
defaults = {}
|
3565
4335
|
}) {
|
3566
4336
|
const actionBase = {
|
3567
|
-
createdAt
|
4337
|
+
// Offset is needed so the createdAt timestamps for events, actions and drafts make logical sense in storybook tests.
|
4338
|
+
// @TODO: This should be fixed in the future.
|
4339
|
+
createdAt: new Date(Date.now() - 500).toISOString(),
|
3568
4340
|
createdBy: getUUID(),
|
4341
|
+
createdByRole: "FIELD_AGENT",
|
3569
4342
|
id: getUUID(),
|
3570
4343
|
createdAtLocation: "TODO",
|
3571
|
-
|
3572
|
-
|
3573
|
-
|
4344
|
+
updatedAtLocation: "TODO",
|
4345
|
+
declaration: generateActionDeclarationInput(configuration, action),
|
4346
|
+
annotation: {},
|
4347
|
+
...defaults,
|
4348
|
+
status: ActionStatus.Accepted,
|
4349
|
+
transactionId: getUUID()
|
3574
4350
|
};
|
3575
4351
|
switch (action) {
|
4352
|
+
case ActionType.READ:
|
4353
|
+
return { ...actionBase, type: action };
|
4354
|
+
case ActionType.MARKED_AS_DUPLICATE:
|
4355
|
+
return { ...actionBase, type: action };
|
3576
4356
|
case ActionType.DECLARE:
|
3577
4357
|
return { ...actionBase, type: action };
|
3578
4358
|
case ActionType.UNASSIGN:
|
3579
|
-
return { ...actionBase, type: action };
|
4359
|
+
return { ...actionBase, type: action, assignedTo: null };
|
3580
4360
|
case ActionType.ASSIGN:
|
3581
4361
|
return { ...actionBase, assignedTo: getUUID(), type: action };
|
3582
4362
|
case ActionType.VALIDATE:
|
3583
4363
|
return { ...actionBase, type: action };
|
3584
|
-
case ActionType.
|
4364
|
+
case ActionType.ARCHIVE:
|
3585
4365
|
return { ...actionBase, type: action };
|
3586
4366
|
case ActionType.REJECT:
|
3587
4367
|
return { ...actionBase, type: action };
|
@@ -3597,14 +4377,13 @@ function generateActionDocument({
|
|
3597
4377
|
return { ...actionBase, requestId: getUUID(), type: action };
|
3598
4378
|
case ActionType.REJECT_CORRECTION:
|
3599
4379
|
return { ...actionBase, requestId: getUUID(), type: action };
|
3600
|
-
case ActionType.CUSTOM:
|
3601
|
-
return { ...actionBase, type: action };
|
3602
4380
|
case ActionType.REGISTER:
|
3603
4381
|
return {
|
3604
4382
|
...actionBase,
|
3605
|
-
type: action
|
3606
|
-
identifiers: { trackingId: getUUID(), registrationNumber: getUUID() }
|
4383
|
+
type: action
|
3607
4384
|
};
|
4385
|
+
case ActionType.DELETE:
|
4386
|
+
case ActionType.DETECT_DUPLICATE:
|
3608
4387
|
default:
|
3609
4388
|
throw new Error(`Unsupported action type: ${action}`);
|
3610
4389
|
}
|
@@ -3619,12 +4398,18 @@ function generateEventDocument({
|
|
3619
4398
|
actions: actions.map(
|
3620
4399
|
(action) => generateActionDocument({ configuration, action })
|
3621
4400
|
),
|
3622
|
-
createdAt
|
4401
|
+
// Offset is needed so the createdAt timestamps for events, actions and drafts make logical sense in storybook tests.
|
4402
|
+
// @TODO: This should be fixed in the future.
|
4403
|
+
createdAt: new Date(Date.now() - 1e3).toISOString(),
|
3623
4404
|
id: getUUID(),
|
3624
|
-
|
4405
|
+
// Offset is needed so the createdAt timestamps for events, actions and drafts make logical sense in storybook tests.
|
4406
|
+
// @TODO: This should be fixed in the future.
|
4407
|
+
updatedAt: new Date(Date.now() - 1e3).toISOString(),
|
4408
|
+
dateOfEvent: configuration.dateOfEvent,
|
4409
|
+
updatedAtLocation: getUUID()
|
3625
4410
|
};
|
3626
4411
|
}
|
3627
|
-
function generateEventDraftDocument(eventId, actionType = ActionType.DECLARE,
|
4412
|
+
function generateEventDraftDocument(eventId, actionType = ActionType.DECLARE, declaration = {}) {
|
3628
4413
|
const action = generateActionDocument({
|
3629
4414
|
configuration: tennisClubMembershipEvent,
|
3630
4415
|
action: actionType
|
@@ -3634,9 +4419,9 @@ function generateEventDraftDocument(eventId, actionType = ActionType.DECLARE, da
|
|
3634
4419
|
transactionId: getUUID(),
|
3635
4420
|
action: {
|
3636
4421
|
...action,
|
3637
|
-
|
3638
|
-
...action.
|
3639
|
-
...
|
4422
|
+
declaration: {
|
4423
|
+
...action.declaration,
|
4424
|
+
...declaration
|
3640
4425
|
}
|
3641
4426
|
},
|
3642
4427
|
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
@@ -3650,10 +4435,12 @@ var eventQueryDataGenerator = (overrides = {}) => ({
|
|
3650
4435
|
createdAt: overrides.createdAt ?? (/* @__PURE__ */ new Date()).toISOString(),
|
3651
4436
|
createdBy: overrides.createdBy ?? getUUID(),
|
3652
4437
|
createdAtLocation: overrides.createdAtLocation ?? getUUID(),
|
3653
|
-
|
4438
|
+
updatedAtLocation: overrides.updatedAtLocation ?? getUUID(),
|
4439
|
+
updatedAt: overrides.updatedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
|
3654
4440
|
assignedTo: overrides.assignedTo ?? null,
|
3655
4441
|
updatedBy: overrides.updatedBy ?? getUUID(),
|
3656
|
-
|
4442
|
+
updatedByUserRole: overrides.updatedByUserRole ?? "FIELD_AGENT",
|
4443
|
+
declaration: overrides.declaration ?? {
|
3657
4444
|
"recommender.none": true,
|
3658
4445
|
"applicant.firstname": "Danny",
|
3659
4446
|
"applicant.surname": "Doe",
|
@@ -3661,6 +4448,11 @@ var eventQueryDataGenerator = (overrides = {}) => ({
|
|
3661
4448
|
},
|
3662
4449
|
trackingId: overrides.trackingId ?? "M3F8YQ"
|
3663
4450
|
});
|
4451
|
+
var generateTranslationConfig = (message) => ({
|
4452
|
+
defaultMessage: message,
|
4453
|
+
description: "Description for ${message}",
|
4454
|
+
id: message
|
4455
|
+
});
|
3664
4456
|
|
3665
4457
|
// ../commons/src/events/TemplateConfig.ts
|
3666
4458
|
function isTemplateVariable(value) {
|
@@ -3678,8 +4470,10 @@ function isFieldValueWithoutTemplates(value) {
|
|
3678
4470
|
}
|
3679
4471
|
return true;
|
3680
4472
|
}
|
3681
|
-
function
|
3682
|
-
if (!value)
|
4473
|
+
function isFieldConfigDefaultValue(value) {
|
4474
|
+
if (!value) {
|
4475
|
+
return false;
|
4476
|
+
}
|
3683
4477
|
if (isFieldValue(value)) {
|
3684
4478
|
return true;
|
3685
4479
|
}
|
@@ -3687,7 +4481,217 @@ function isDefaultValue(value) {
|
|
3687
4481
|
return true;
|
3688
4482
|
}
|
3689
4483
|
if (typeof value === "object" && Object.values(value).every((v) => typeof v === "object" && v !== null)) {
|
3690
|
-
return Object.values(value).every((v) =>
|
4484
|
+
return Object.values(value).every((v) => isFieldConfigDefaultValue(v));
|
3691
4485
|
}
|
3692
4486
|
return false;
|
3693
4487
|
}
|
4488
|
+
|
4489
|
+
// ../commons/src/events/scopes.ts
|
4490
|
+
var import_lodash3 = require("lodash");
|
4491
|
+
|
4492
|
+
// ../commons/src/scopes.ts
|
4493
|
+
var SCOPES = {
|
4494
|
+
// TODO v1.8 legacy scopes
|
4495
|
+
NATLSYSADMIN: "natlsysadmin",
|
4496
|
+
BYPASSRATELIMIT: "bypassratelimit",
|
4497
|
+
DECLARE: "declare",
|
4498
|
+
REGISTER: "register",
|
4499
|
+
VALIDATE: "validate",
|
4500
|
+
DEMO: "demo",
|
4501
|
+
CERTIFY: "certify",
|
4502
|
+
PERFORMANCE: "performance",
|
4503
|
+
SYSADMIN: "sysadmin",
|
4504
|
+
TEAMS: "teams",
|
4505
|
+
CONFIG: "config",
|
4506
|
+
// systems / integrations
|
4507
|
+
WEBHOOK: "webhook",
|
4508
|
+
NATIONALID: "nationalId",
|
4509
|
+
NOTIFICATION_API: "notification-api",
|
4510
|
+
RECORDSEARCH: "recordsearch",
|
4511
|
+
/**
|
4512
|
+
* @TODO This is a temporary scope to be used for V2 Events custom events declaration
|
4513
|
+
*/
|
4514
|
+
RECORD_DECLARE: "record.declare-birth",
|
4515
|
+
// declare
|
4516
|
+
RECORD_DECLARE_BIRTH: "record.declare-birth",
|
4517
|
+
RECORD_DECLARE_BIRTH_MY_JURISDICTION: "record.declare-birth:my-jurisdiction",
|
4518
|
+
RECORD_DECLARE_DEATH: "record.declare-death",
|
4519
|
+
RECORD_DECLARE_DEATH_MY_JURISDICTION: "record.declare-death:my-jurisdiction",
|
4520
|
+
RECORD_DECLARE_MARRIAGE: "record.declare-marriage",
|
4521
|
+
RECORD_DECLARE_MARRIAGE_MY_JURISDICTION: "record.declare-marriage:my-jurisdiction",
|
4522
|
+
RECORD_SUBMIT_INCOMPLETE: "record.declaration-submit-incomplete",
|
4523
|
+
RECORD_SUBMIT_FOR_REVIEW: "record.declaration-submit-for-review",
|
4524
|
+
RECORD_UNASSIGN_OTHERS: "record.unassign-others",
|
4525
|
+
// validate
|
4526
|
+
RECORD_SUBMIT_FOR_APPROVAL: "record.declaration-submit-for-approval",
|
4527
|
+
RECORD_SUBMIT_FOR_UPDATES: "record.declaration-submit-for-updates",
|
4528
|
+
RECORD_DECLARATION_EDIT: "record.declaration-edit",
|
4529
|
+
RECORD_REVIEW_DUPLICATES: "record.review-duplicates",
|
4530
|
+
RECORD_DECLARATION_ARCHIVE: "record.declaration-archive",
|
4531
|
+
RECORD_DECLARATION_REINSTATE: "record.declaration-reinstate",
|
4532
|
+
// register
|
4533
|
+
RECORD_REGISTER: "record.register",
|
4534
|
+
// certify
|
4535
|
+
RECORD_EXPORT_RECORDS: "record.export-records",
|
4536
|
+
RECORD_DECLARATION_PRINT: "record.declaration-print",
|
4537
|
+
RECORD_PRINT_RECORDS_SUPPORTING_DOCUMENTS: "record.declaration-print-supporting-documents",
|
4538
|
+
RECORD_REGISTRATION_PRINT: "record.registration-print",
|
4539
|
+
// v1.8
|
4540
|
+
/**
|
4541
|
+
* This scope is used to **print and **issue certified copies of a record
|
4542
|
+
* after it has been registered. Previously Registrars had this permission.
|
4543
|
+
*/
|
4544
|
+
RECORD_PRINT_ISSUE_CERTIFIED_COPIES: "record.registration-print&issue-certified-copies",
|
4545
|
+
RECORD_PRINT_CERTIFIED_COPIES: "record.registration-print-certified-copies",
|
4546
|
+
// v1.8
|
4547
|
+
RECORD_BULK_PRINT_CERTIFIED_COPIES: "record.registration-bulk-print-certified-copies",
|
4548
|
+
// v1.8
|
4549
|
+
RECORD_REGISTRATION_VERIFY_CERTIFIED_COPIES: "record.registration-verify-certified-copies",
|
4550
|
+
// v1.8
|
4551
|
+
// correct
|
4552
|
+
RECORD_REGISTRATION_REQUEST_CORRECTION: "record.registration-request-correction",
|
4553
|
+
RECORD_REGISTRATION_CORRECT: "record.registration-correct",
|
4554
|
+
RECORD_REGISTRATION_REQUEST_REVOCATION: "record.registration-request-revocation",
|
4555
|
+
// v1.8
|
4556
|
+
RECORD_REGISTRATION_REVOKE: "record.registration-revoke",
|
4557
|
+
// v1.8
|
4558
|
+
RECORD_REGISTRATION_REQUEST_REINSTATEMENT: "record.registration-request-reinstatement",
|
4559
|
+
// v1.8
|
4560
|
+
RECORD_REGISTRATION_REINSTATE: "record.registration-reinstate",
|
4561
|
+
// v1.8
|
4562
|
+
RECORD_CONFIRM_REGISTRATION: "record.confirm-registration",
|
4563
|
+
RECORD_REJECT_REGISTRATION: "record.reject-registration",
|
4564
|
+
// search
|
4565
|
+
SEARCH_BIRTH_MY_JURISDICTION: "search.birth:my-jurisdiction",
|
4566
|
+
SEARCH_BIRTH: "search.birth",
|
4567
|
+
SEARCH_DEATH_MY_JURISDICTION: "search.death:my-jurisdiction",
|
4568
|
+
SEARCH_DEATH: "search.death",
|
4569
|
+
SEARCH_MARRIAGE_MY_JURISDICTION: "search.marriage:my-jurisdiction",
|
4570
|
+
SEARCH_MARRIAGE: "search.marriage",
|
4571
|
+
// audit v1.8
|
4572
|
+
RECORD_READ: "record.read",
|
4573
|
+
RECORD_READ_AUDIT: "record.read-audit",
|
4574
|
+
RECORD_READ_COMMENTS: "record.read-comments",
|
4575
|
+
RECORD_CREATE_COMMENTS: "record.create-comments",
|
4576
|
+
// profile
|
4577
|
+
PROFILE_UPDATE: "profile.update",
|
4578
|
+
//v1.8
|
4579
|
+
PROFILE_ELECTRONIC_SIGNATURE: "profile.electronic-signature",
|
4580
|
+
// performance
|
4581
|
+
PERFORMANCE_READ: "performance.read",
|
4582
|
+
PERFORMANCE_READ_DASHBOARDS: "performance.read-dashboards",
|
4583
|
+
PERFORMANCE_EXPORT_VITAL_STATISTICS: "performance.vital-statistics-export",
|
4584
|
+
// organisation
|
4585
|
+
ORGANISATION_READ_LOCATIONS: "organisation.read-locations:all",
|
4586
|
+
ORGANISATION_READ_LOCATIONS_MY_OFFICE: "organisation.read-locations:my-office",
|
4587
|
+
ORGANISATION_READ_LOCATIONS_MY_JURISDICTION: "organisation.read-locations:my-jurisdiction",
|
4588
|
+
// user
|
4589
|
+
USER_READ: "user.read:all",
|
4590
|
+
USER_READ_MY_OFFICE: "user.read:my-office",
|
4591
|
+
USER_READ_MY_JURISDICTION: "user.read:my-jurisdiction",
|
4592
|
+
USER_READ_ONLY_MY_AUDIT: "user.read:only-my-audit",
|
4593
|
+
//v1.8
|
4594
|
+
USER_CREATE: "user.create:all",
|
4595
|
+
USER_CREATE_MY_JURISDICTION: "user.create:my-jurisdiction",
|
4596
|
+
USER_UPDATE: "user.update:all",
|
4597
|
+
USER_UPDATE_MY_JURISDICTION: "user.update:my-jurisdiction",
|
4598
|
+
// config
|
4599
|
+
CONFIG_UPDATE_ALL: "config.update:all",
|
4600
|
+
// data seeding
|
4601
|
+
USER_DATA_SEEDING: "user.data-seeding"
|
4602
|
+
};
|
4603
|
+
var scopes = Object.values(SCOPES);
|
4604
|
+
|
4605
|
+
// ../commons/src/events/scopes.ts
|
4606
|
+
function hasAnyOfScopes(a, b) {
|
4607
|
+
return (0, import_lodash3.intersection)(a, b).length > 0;
|
4608
|
+
}
|
4609
|
+
var CONFIG_GET_ALLOWED_SCOPES = [
|
4610
|
+
SCOPES.RECORD_DECLARE,
|
4611
|
+
SCOPES.RECORD_READ,
|
4612
|
+
SCOPES.RECORD_SUBMIT_INCOMPLETE,
|
4613
|
+
SCOPES.RECORD_SUBMIT_FOR_REVIEW,
|
4614
|
+
SCOPES.RECORD_REGISTER,
|
4615
|
+
SCOPES.RECORD_EXPORT_RECORDS,
|
4616
|
+
SCOPES.CONFIG,
|
4617
|
+
SCOPES.CONFIG_UPDATE_ALL
|
4618
|
+
];
|
4619
|
+
var CONFIG_SEARCH_ALLOWED_SCOPES = [
|
4620
|
+
SCOPES.SEARCH_BIRTH,
|
4621
|
+
SCOPES.SEARCH_DEATH,
|
4622
|
+
SCOPES.SEARCH_MARRIAGE,
|
4623
|
+
SCOPES.SEARCH_BIRTH_MY_JURISDICTION,
|
4624
|
+
SCOPES.SEARCH_DEATH_MY_JURISDICTION,
|
4625
|
+
SCOPES.SEARCH_MARRIAGE_MY_JURISDICTION
|
4626
|
+
];
|
4627
|
+
var ACTION_ALLOWED_SCOPES = {
|
4628
|
+
[ActionType.READ]: [
|
4629
|
+
SCOPES.RECORD_DECLARE,
|
4630
|
+
SCOPES.RECORD_READ,
|
4631
|
+
SCOPES.RECORD_SUBMIT_INCOMPLETE,
|
4632
|
+
SCOPES.RECORD_SUBMIT_FOR_REVIEW,
|
4633
|
+
SCOPES.RECORD_REGISTER,
|
4634
|
+
SCOPES.RECORD_EXPORT_RECORDS
|
4635
|
+
],
|
4636
|
+
[ActionType.CREATE]: [
|
4637
|
+
SCOPES.RECORD_DECLARE,
|
4638
|
+
SCOPES.RECORD_SUBMIT_INCOMPLETE,
|
4639
|
+
SCOPES.RECORD_SUBMIT_FOR_REVIEW
|
4640
|
+
],
|
4641
|
+
[ActionType.NOTIFY]: [SCOPES.RECORD_SUBMIT_INCOMPLETE],
|
4642
|
+
[ActionType.DECLARE]: [
|
4643
|
+
SCOPES.RECORD_DECLARE,
|
4644
|
+
SCOPES.RECORD_SUBMIT_FOR_APPROVAL,
|
4645
|
+
SCOPES.RECORD_REGISTER
|
4646
|
+
],
|
4647
|
+
[ActionType.DELETE]: [SCOPES.RECORD_DECLARE],
|
4648
|
+
[ActionType.VALIDATE]: [
|
4649
|
+
SCOPES.RECORD_SUBMIT_FOR_APPROVAL,
|
4650
|
+
SCOPES.RECORD_REGISTER
|
4651
|
+
],
|
4652
|
+
[ActionType.REGISTER]: [SCOPES.RECORD_REGISTER],
|
4653
|
+
[ActionType.PRINT_CERTIFICATE]: [SCOPES.RECORD_PRINT_ISSUE_CERTIFIED_COPIES],
|
4654
|
+
[ActionType.REQUEST_CORRECTION]: [
|
4655
|
+
SCOPES.RECORD_REGISTRATION_REQUEST_CORRECTION
|
4656
|
+
],
|
4657
|
+
[ActionType.REJECT_CORRECTION]: [SCOPES.RECORD_REGISTRATION_CORRECT],
|
4658
|
+
[ActionType.APPROVE_CORRECTION]: [SCOPES.RECORD_REGISTRATION_CORRECT],
|
4659
|
+
[ActionType.MARKED_AS_DUPLICATE]: [SCOPES.RECORD_DECLARATION_ARCHIVE],
|
4660
|
+
[ActionType.ARCHIVE]: [SCOPES.RECORD_DECLARATION_ARCHIVE],
|
4661
|
+
[ActionType.REJECT]: [SCOPES.RECORD_SUBMIT_FOR_UPDATES],
|
4662
|
+
[ActionType.ASSIGN]: null,
|
4663
|
+
[ActionType.UNASSIGN]: null,
|
4664
|
+
[ActionType.DETECT_DUPLICATE]: []
|
4665
|
+
};
|
4666
|
+
function filterUnallowedActions(actions, userScopes) {
|
4667
|
+
const allowedActions = actions.filter((action) => {
|
4668
|
+
const requiredScopes = ACTION_ALLOWED_SCOPES[action];
|
4669
|
+
if (requiredScopes === null) {
|
4670
|
+
return true;
|
4671
|
+
}
|
4672
|
+
return hasAnyOfScopes(userScopes, requiredScopes);
|
4673
|
+
});
|
4674
|
+
const hasOtherAllowedActions = allowedActions.some(
|
4675
|
+
(action) => action !== ActionType.READ && action !== ActionType.ASSIGN && action !== ActionType.UNASSIGN
|
4676
|
+
);
|
4677
|
+
if (hasOtherAllowedActions) {
|
4678
|
+
return allowedActions;
|
4679
|
+
}
|
4680
|
+
return [ActionType.READ];
|
4681
|
+
}
|
4682
|
+
|
4683
|
+
// ../commons/src/event-config/event-configuration.ts
|
4684
|
+
function createEventFieldConfig(fieldId, options) {
|
4685
|
+
return {
|
4686
|
+
fieldId,
|
4687
|
+
options,
|
4688
|
+
config: { type: "EXACT" },
|
4689
|
+
fieldType: "event"
|
4690
|
+
};
|
4691
|
+
}
|
4692
|
+
|
4693
|
+
// ../commons/src/events/event.ts
|
4694
|
+
function eventFn(fieldId, options) {
|
4695
|
+
return createEventFieldConfig(fieldId, options);
|
4696
|
+
}
|
4697
|
+
var event = Object.assign(eventFn, createEventConditionals());
|