@opencrvs/toolkit 1.8.0-rc.f7910f3 → 1.8.0-rc.f82791e
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 +10107 -14906
- package/dist/commons/conditionals/conditionals.d.ts +30 -5
- package/dist/commons/conditionals/validate.d.ts +12 -17
- package/dist/commons/events/ActionConfig.d.ts +85214 -5919
- package/dist/commons/events/ActionDocument.d.ts +7706 -295
- package/dist/commons/events/ActionInput.d.ts +2164 -419
- package/dist/commons/events/ActionType.d.ts +26 -16
- package/dist/commons/events/AdvancedSearchConfig.d.ts +371 -25
- package/dist/commons/events/CompositeFieldValue.d.ts +3 -0
- package/dist/commons/events/Conditional.d.ts +21 -5
- package/dist/commons/events/Draft.d.ts +75 -45
- package/dist/commons/events/EventConfig.d.ts +40575 -3186
- package/dist/commons/events/EventConfigInput.d.ts +5 -2
- package/dist/commons/events/EventDocument.d.ts +1027 -379
- 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 +3702 -757
- package/dist/commons/events/FieldType.d.ts +1 -2
- package/dist/commons/events/FieldValue.d.ts +1 -1
- package/dist/commons/events/FormConfig.d.ts +38913 -348
- 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 +5 -5
- 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 +6747 -502
- 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 +63 -321
- package/dist/commons/events/utils.d.ts +3422 -206
- package/dist/commons/events/utils.test.d.ts +2 -0
- package/dist/conditionals/index.js +191 -120
- package/dist/events/index.js +1821 -1192
- package/package.json +3 -2
package/dist/events/index.js
CHANGED
@@ -30,13 +30,18 @@ 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,
|
@@ -45,17 +50,30 @@ __export(events_exports, {
|
|
45
50
|
AdvancedSearchConfig: () => AdvancedSearchConfig,
|
46
51
|
ApproveCorrectionActionInput: () => ApproveCorrectionActionInput,
|
47
52
|
ArchiveActionInput: () => ArchiveActionInput,
|
53
|
+
AssignActionInput: () => AssignActionInput,
|
54
|
+
AsyncRejectActionDocument: () => AsyncRejectActionDocument,
|
48
55
|
BaseActionInput: () => BaseActionInput,
|
56
|
+
CONFIG_GET_ALLOWED_SCOPES: () => CONFIG_GET_ALLOWED_SCOPES,
|
57
|
+
CONFIG_SEARCH_ALLOWED_SCOPES: () => CONFIG_SEARCH_ALLOWED_SCOPES,
|
49
58
|
CertificateConfig: () => CertificateConfig,
|
50
59
|
CertificateTemplateConfig: () => CertificateTemplateConfig,
|
51
60
|
CheckboxFieldValue: () => CheckboxFieldValue,
|
52
61
|
Clause: () => Clause,
|
53
62
|
Conditional: () => Conditional,
|
54
63
|
ConditionalType: () => ConditionalType,
|
64
|
+
ConfirmableActions: () => ConfirmableActions,
|
65
|
+
DataEntry: () => DataEntry,
|
55
66
|
DataFieldValue: () => DataFieldValue,
|
56
67
|
DateValue: () => DateValue,
|
68
|
+
DeclarationActionConfig: () => DeclarationActionConfig,
|
69
|
+
DeclarationActions: () => DeclarationActions,
|
70
|
+
DeclarationFormConfig: () => DeclarationFormConfig,
|
71
|
+
DeclarationReviewConfig: () => DeclarationReviewConfig,
|
72
|
+
DeclarationUpdateActions: () => DeclarationUpdateActions,
|
57
73
|
DeclareActionInput: () => DeclareActionInput,
|
58
74
|
DeduplicationConfig: () => DeduplicationConfig,
|
75
|
+
DeleteActionInput: () => DeleteActionInput,
|
76
|
+
DisplayOnReviewConditional: () => DisplayOnReviewConditional,
|
59
77
|
Draft: () => Draft,
|
60
78
|
DraftInput: () => DraftInput,
|
61
79
|
EmailField: () => EmailField,
|
@@ -63,13 +81,17 @@ __export(events_exports, {
|
|
63
81
|
EnableConditional: () => EnableConditional,
|
64
82
|
EventConfig: () => EventConfig,
|
65
83
|
EventDocument: () => EventDocument,
|
84
|
+
EventFieldConfigSchema: () => EventFieldConfigSchema,
|
85
|
+
EventFieldId: () => EventFieldId,
|
66
86
|
EventIndex: () => EventIndex,
|
67
87
|
EventInput: () => EventInput,
|
68
88
|
EventMetadata: () => EventMetadata,
|
69
89
|
EventSearchIndex: () => EventSearchIndex,
|
70
90
|
EventStatus: () => EventStatus,
|
71
91
|
EventStatuses: () => EventStatuses,
|
92
|
+
FieldConditional: () => FieldConditional,
|
72
93
|
FieldConfig: () => FieldConfig,
|
94
|
+
FieldConfigSchema: () => FieldConfigSchema,
|
73
95
|
FieldType: () => FieldType,
|
74
96
|
FieldUpdateValue: () => FieldUpdateValue,
|
75
97
|
FieldValue: () => FieldValue,
|
@@ -77,49 +99,66 @@ __export(events_exports, {
|
|
77
99
|
FileFieldValueWithOption: () => FileFieldValueWithOption,
|
78
100
|
FileFieldWithOptionValue: () => FileFieldWithOptionValue,
|
79
101
|
FormConfig: () => FormConfig,
|
80
|
-
FormPage: () => FormPage,
|
81
102
|
FormPageConfig: () => FormPageConfig,
|
82
|
-
FormPageType: () => FormPageType,
|
83
103
|
GenericAddressUpdateValue: () => GenericAddressUpdateValue,
|
84
104
|
GenericAddressValue: () => GenericAddressValue,
|
85
105
|
GeographicalArea: () => GeographicalArea,
|
86
106
|
ImageMimeType: () => ImageMimeType,
|
87
107
|
LanguageConfig: () => LanguageConfig,
|
88
|
-
LatentActions: () => LatentActions,
|
89
108
|
MarkedAsDuplicateActionInput: () => MarkedAsDuplicateActionInput,
|
109
|
+
MatchType: () => MatchType,
|
90
110
|
MimeType: () => MimeType,
|
111
|
+
NonEmptyTextValue: () => NonEmptyTextValue,
|
91
112
|
NotifyActionInput: () => NotifyActionInput,
|
92
113
|
NumberFieldValue: () => NumberFieldValue,
|
114
|
+
PageConfig: () => PageConfig,
|
115
|
+
PageTypes: () => PageTypes,
|
93
116
|
PrintCertificateActionInput: () => PrintCertificateActionInput,
|
117
|
+
QueryInput: () => QueryInput,
|
118
|
+
QueryType: () => QueryType,
|
119
|
+
ReadActionInput: () => ReadActionInput,
|
120
|
+
RegisterAction: () => RegisterAction,
|
94
121
|
RegisterActionInput: () => RegisterActionInput,
|
95
122
|
RejectCorrectionActionInput: () => RejectCorrectionActionInput,
|
96
123
|
RejectDeclarationActionInput: () => RejectDeclarationActionInput,
|
97
124
|
RequestCorrectionActionInput: () => RequestCorrectionActionInput,
|
98
|
-
RequiredTextValue: () => RequiredTextValue,
|
99
125
|
ResolvedUser: () => ResolvedUser,
|
100
126
|
RuralAddressUpdateValue: () => RuralAddressUpdateValue,
|
101
127
|
RuralAddressValue: () => RuralAddressValue,
|
128
|
+
SearchField: () => SearchField,
|
129
|
+
SelectOption: () => SelectOption,
|
102
130
|
ShowConditional: () => ShowConditional,
|
103
131
|
SummaryConfig: () => SummaryConfig,
|
104
132
|
TextValue: () => TextValue,
|
105
133
|
TranslationConfig: () => TranslationConfig,
|
134
|
+
UnassignActionInput: () => UnassignActionInput,
|
106
135
|
UrbanAddressUpdateValue: () => UrbanAddressUpdateValue,
|
107
136
|
UrbanAddressValue: () => UrbanAddressValue,
|
108
137
|
ValidateActionInput: () => ValidateActionInput,
|
109
|
-
|
138
|
+
VerificationActionConfig: () => VerificationActionConfig,
|
110
139
|
VerificationPageConfig: () => VerificationPageConfig,
|
111
140
|
WorkqueueConfig: () => WorkqueueConfig,
|
141
|
+
ZodDate: () => ZodDate,
|
112
142
|
alwaysTrue: () => alwaysTrue,
|
113
143
|
and: () => and,
|
144
|
+
annotationActions: () => annotationActions,
|
114
145
|
applyDraftsToEventIndex: () => applyDraftsToEventIndex,
|
146
|
+
areConditionsMet: () => areConditionsMet,
|
115
147
|
compositeFieldTypes: () => compositeFieldTypes,
|
116
148
|
createEmptyDraft: () => createEmptyDraft,
|
149
|
+
createEventConditionals: () => createEventConditionals,
|
150
|
+
createFieldConditionals: () => createFieldConditionals,
|
117
151
|
createValidationSchema: () => createValidationSchema,
|
118
152
|
deepDropNulls: () => deepDropNulls,
|
153
|
+
deepMerge: () => deepMerge,
|
154
|
+
defineActionForm: () => defineActionForm,
|
119
155
|
defineConditional: () => defineConditional,
|
120
156
|
defineConfig: () => defineConfig,
|
121
|
-
|
157
|
+
defineDeclarationForm: () => defineDeclarationForm,
|
158
|
+
defineFormConditional: () => defineFormConditional,
|
122
159
|
defineFormPage: () => defineFormPage,
|
160
|
+
definePage: () => definePage,
|
161
|
+
defineWorkqueue: () => defineWorkqueue,
|
123
162
|
errorMessages: () => errorMessages,
|
124
163
|
event: () => event,
|
125
164
|
eventMetadataLabelMap: () => eventMetadataLabelMap,
|
@@ -128,35 +167,38 @@ __export(events_exports, {
|
|
128
167
|
eventStatuses: () => eventStatuses,
|
129
168
|
field: () => field,
|
130
169
|
fieldTypes: () => fieldTypes,
|
131
|
-
|
132
|
-
findActiveActionForm: () => findActiveActionForm,
|
133
|
-
findActiveActionFormFields: () => findActiveActionFormFields,
|
134
|
-
findActiveActionFormPages: () => findActiveActionFormPages,
|
170
|
+
filterUnallowedActions: () => filterUnallowedActions,
|
135
171
|
findActiveDrafts: () => findActiveDrafts,
|
136
|
-
|
137
|
-
|
172
|
+
findAllFields: () => findAllFields,
|
173
|
+
findLastAssignmentAction: () => findLastAssignmentAction,
|
174
|
+
findRecordActionPages: () => findRecordActionPages,
|
175
|
+
generateActionAnnotationInput: () => generateActionAnnotationInput,
|
176
|
+
generateActionDeclarationInput: () => generateActionDeclarationInput,
|
138
177
|
generateActionDocument: () => generateActionDocument,
|
139
|
-
generateActionInput: () => generateActionInput,
|
140
|
-
generateActionMetadataInput: () => generateActionMetadataInput,
|
141
178
|
generateEventDocument: () => generateEventDocument,
|
142
179
|
generateEventDraftDocument: () => generateEventDraftDocument,
|
143
180
|
generateTransactionId: () => generateTransactionId,
|
144
181
|
generateTranslationConfig: () => generateTranslationConfig,
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
182
|
+
getAcceptedActions: () => getAcceptedActions,
|
183
|
+
getActionAnnotation: () => getActionAnnotation,
|
184
|
+
getActionAnnotationFields: () => getActionAnnotationFields,
|
185
|
+
getActionReview: () => getActionReview,
|
186
|
+
getActionReviewFields: () => getActionReviewFields,
|
187
|
+
getActionVerificationPageIds: () => getActionVerificationPageIds,
|
188
|
+
getAnnotationFromDrafts: () => getAnnotationFromDrafts,
|
189
|
+
getAssignedUserFromActions: () => getAssignedUserFromActions,
|
149
190
|
getCurrentEventState: () => getCurrentEventState,
|
150
191
|
getCurrentEventStateWithDrafts: () => getCurrentEventStateWithDrafts,
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
192
|
+
getDeclaration: () => getDeclaration,
|
193
|
+
getDeclarationFields: () => getDeclarationFields,
|
194
|
+
getDeclarationPages: () => getDeclarationPages,
|
195
|
+
getVisibleVerificationPageIds: () => getVisibleVerificationPageIds,
|
196
|
+
hasAnyOfScopes: () => hasAnyOfScopes,
|
156
197
|
isAddressFieldType: () => isAddressFieldType,
|
157
198
|
isAdministrativeAreaFieldType: () => isAdministrativeAreaFieldType,
|
158
199
|
isBulletListFieldType: () => isBulletListFieldType,
|
159
200
|
isCheckboxFieldType: () => isCheckboxFieldType,
|
201
|
+
isConditionMet: () => isConditionMet,
|
160
202
|
isCountryFieldType: () => isCountryFieldType,
|
161
203
|
isDataFieldType: () => isDataFieldType,
|
162
204
|
isDateFieldType: () => isDateFieldType,
|
@@ -164,6 +206,7 @@ __export(events_exports, {
|
|
164
206
|
isEmailFieldType: () => isEmailFieldType,
|
165
207
|
isFacilityFieldType: () => isFacilityFieldType,
|
166
208
|
isFieldConfigDefaultValue: () => isFieldConfigDefaultValue,
|
209
|
+
isFieldDisplayedOnReview: () => isFieldDisplayedOnReview,
|
167
210
|
isFieldEnabled: () => isFieldEnabled,
|
168
211
|
isFieldValue: () => isFieldValue,
|
169
212
|
isFieldValueWithoutTemplates: () => isFieldValueWithoutTemplates,
|
@@ -184,50 +227,71 @@ __export(events_exports, {
|
|
184
227
|
isTextFieldType: () => isTextFieldType,
|
185
228
|
isUndeclaredDraft: () => isUndeclaredDraft,
|
186
229
|
isVerificationPage: () => isVerificationPage,
|
230
|
+
isWriteAction: () => isWriteAction,
|
187
231
|
mapFieldTypeToEmptyValue: () => mapFieldTypeToEmptyValue,
|
188
232
|
mapFieldTypeToMockValue: () => mapFieldTypeToMockValue,
|
189
233
|
mapFieldTypeToZod: () => mapFieldTypeToZod,
|
234
|
+
never: () => never,
|
190
235
|
not: () => not,
|
236
|
+
omitHiddenAnnotationFields: () => omitHiddenAnnotationFields,
|
237
|
+
omitHiddenFields: () => omitHiddenFields,
|
238
|
+
omitHiddenPaginatedFields: () => omitHiddenPaginatedFields,
|
191
239
|
or: () => or,
|
192
|
-
|
193
|
-
stripHiddenFields: () => stripHiddenFields,
|
240
|
+
runFieldValidations: () => runFieldValidations,
|
194
241
|
user: () => user,
|
195
242
|
validate: () => validate,
|
196
243
|
validateFieldInput: () => validateFieldInput,
|
197
|
-
|
244
|
+
writeActions: () => writeActions
|
198
245
|
});
|
199
246
|
module.exports = __toCommonJS(events_exports);
|
200
247
|
|
201
248
|
// ../commons/src/events/ActionConfig.ts
|
202
|
-
var
|
249
|
+
var import_zod9 = require("zod");
|
203
250
|
|
204
251
|
// ../commons/src/events/Conditional.ts
|
205
252
|
var import_zod = require("zod");
|
206
|
-
|
207
|
-
|
208
|
-
|
253
|
+
var Conditional = import_zod.z.custom(
|
254
|
+
(val) => typeof val === "object" && val !== null
|
255
|
+
);
|
209
256
|
var ConditionalType = {
|
210
|
-
/** When 'SHOW' conditional is defined, the action is shown to the user only if the condition is met */
|
211
257
|
SHOW: "SHOW",
|
212
|
-
|
213
|
-
|
258
|
+
ENABLE: "ENABLE",
|
259
|
+
DISPLAY_ON_REVIEW: "DISPLAY_ON_REVIEW"
|
214
260
|
};
|
215
261
|
var ShowConditional = import_zod.z.object({
|
216
262
|
type: import_zod.z.literal(ConditionalType.SHOW),
|
217
|
-
conditional: Conditional
|
218
|
-
})
|
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
|
+
);
|
219
267
|
var EnableConditional = import_zod.z.object({
|
220
268
|
type: import_zod.z.literal(ConditionalType.ENABLE),
|
221
|
-
conditional: Conditional
|
222
|
-
})
|
269
|
+
conditional: Conditional
|
270
|
+
}).describe(
|
271
|
+
"If 'ENABLE' conditional is defined, the component is enabled only if the condition is met"
|
272
|
+
);
|
223
273
|
var ActionConditional = import_zod.z.discriminatedUnion("type", [
|
224
274
|
// Action can be shown / hidden
|
225
275
|
ShowConditional,
|
226
276
|
// Action can be shown to the user in the list but as disabled
|
227
277
|
EnableConditional
|
228
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
|
+
]);
|
229
293
|
|
230
|
-
// ../commons/src/events/
|
294
|
+
// ../commons/src/events/PageConfig.ts
|
231
295
|
var import_zod6 = require("zod");
|
232
296
|
|
233
297
|
// ../commons/src/events/FieldConfig.ts
|
@@ -258,7 +322,6 @@ var FieldType = {
|
|
258
322
|
RADIO_GROUP: "RADIO_GROUP",
|
259
323
|
FILE: "FILE",
|
260
324
|
FILE_WITH_OPTIONS: "FILE_WITH_OPTIONS",
|
261
|
-
HIDDEN: "HIDDEN",
|
262
325
|
BULLET_LIST: "BULLET_LIST",
|
263
326
|
CHECKBOX: "CHECKBOX",
|
264
327
|
SELECT: "SELECT",
|
@@ -363,7 +426,7 @@ var FileFieldWithOptionValue = import_zod3.z.array(FileFieldValueWithOption);
|
|
363
426
|
|
364
427
|
// ../commons/src/events/FieldValue.ts
|
365
428
|
var TextValue = import_zod4.z.string();
|
366
|
-
var
|
429
|
+
var NonEmptyTextValue = TextValue.min(1);
|
367
430
|
var DateValue = import_zod4.z.string().date().describe("Date in the format YYYY-MM-DD");
|
368
431
|
var EmailValue = import_zod4.z.string().email();
|
369
432
|
var CheckboxFieldValue = import_zod4.z.boolean();
|
@@ -396,35 +459,28 @@ var FieldUpdateValue = import_zod4.z.union([
|
|
396
459
|
|
397
460
|
// ../commons/src/events/FieldConfig.ts
|
398
461
|
var FieldId = import_zod5.z.string();
|
399
|
-
var
|
400
|
-
|
401
|
-
|
402
|
-
});
|
462
|
+
var ParentReference = import_zod5.z.object({
|
463
|
+
_fieldId: FieldId.optional()
|
464
|
+
}).optional();
|
403
465
|
var BaseField = import_zod5.z.object({
|
404
466
|
id: FieldId,
|
405
467
|
defaultValue: import_zod5.z.union([
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
NumberFieldValue,
|
412
|
-
CheckboxFieldValue
|
413
|
-
]),
|
414
|
-
DependencyExpression
|
468
|
+
TextValue,
|
469
|
+
NonEmptyTextValue,
|
470
|
+
DateValue,
|
471
|
+
NumberFieldValue,
|
472
|
+
CheckboxFieldValue
|
415
473
|
]).optional(),
|
416
|
-
|
474
|
+
parent: ParentReference,
|
475
|
+
conditionals: import_zod5.z.array(FieldConditional).default([]).optional(),
|
417
476
|
required: import_zod5.z.boolean().default(false).optional(),
|
418
|
-
disabled: import_zod5.z.boolean().default(false).optional(),
|
419
|
-
hidden: import_zod5.z.boolean().default(false).optional(),
|
420
477
|
placeholder: TranslationConfig.optional(),
|
421
478
|
validation: import_zod5.z.array(
|
422
479
|
import_zod5.z.object({
|
423
|
-
validator: Conditional
|
480
|
+
validator: Conditional,
|
424
481
|
message: TranslationConfig
|
425
482
|
})
|
426
483
|
).default([]).optional(),
|
427
|
-
dependsOn: import_zod5.z.array(FieldId).default([]).optional(),
|
428
484
|
label: TranslationConfig,
|
429
485
|
hideLabel: import_zod5.z.boolean().default(false).optional()
|
430
486
|
});
|
@@ -433,7 +489,7 @@ var Divider = BaseField.extend({
|
|
433
489
|
});
|
434
490
|
var TextField = BaseField.extend({
|
435
491
|
type: import_zod5.z.literal(FieldType.TEXT),
|
436
|
-
defaultValue:
|
492
|
+
defaultValue: NonEmptyTextValue.optional(),
|
437
493
|
configuration: import_zod5.z.object({
|
438
494
|
maxLength: import_zod5.z.number().optional().describe("Maximum length of the text"),
|
439
495
|
type: import_zod5.z.enum(["text", "password"]).optional(),
|
@@ -443,7 +499,7 @@ var TextField = BaseField.extend({
|
|
443
499
|
}).describe("Text input");
|
444
500
|
var NumberField = BaseField.extend({
|
445
501
|
type: import_zod5.z.literal(FieldType.NUMBER),
|
446
|
-
defaultValue:
|
502
|
+
defaultValue: NumberFieldValue.optional(),
|
447
503
|
configuration: import_zod5.z.object({
|
448
504
|
min: import_zod5.z.number().optional().describe("Minimum value"),
|
449
505
|
max: import_zod5.z.number().optional().describe("Maximum value"),
|
@@ -453,7 +509,7 @@ var NumberField = BaseField.extend({
|
|
453
509
|
}).describe("Number input");
|
454
510
|
var TextAreaField = BaseField.extend({
|
455
511
|
type: import_zod5.z.literal(FieldType.TEXTAREA),
|
456
|
-
defaultValue:
|
512
|
+
defaultValue: NonEmptyTextValue.optional(),
|
457
513
|
configuration: import_zod5.z.object({
|
458
514
|
maxLength: import_zod5.z.number().optional().describe("Maximum length of the text"),
|
459
515
|
rows: import_zod5.z.number().optional().describe("Number of visible text lines"),
|
@@ -487,11 +543,11 @@ var EmailField = BaseField.extend({
|
|
487
543
|
configuration: import_zod5.z.object({
|
488
544
|
maxLength: import_zod5.z.number().optional().describe("Maximum length of the text")
|
489
545
|
}).default({ maxLength: 10 }).optional(),
|
490
|
-
defaultValue:
|
546
|
+
defaultValue: NonEmptyTextValue.optional()
|
491
547
|
});
|
492
548
|
var DateField = BaseField.extend({
|
493
549
|
type: import_zod5.z.literal(FieldType.DATE),
|
494
|
-
defaultValue:
|
550
|
+
defaultValue: DateValue.optional(),
|
495
551
|
configuration: import_zod5.z.object({
|
496
552
|
notice: TranslationConfig.describe(
|
497
553
|
"Text to display above the date input"
|
@@ -510,7 +566,7 @@ var HtmlFontVariant = import_zod5.z.enum([
|
|
510
566
|
]);
|
511
567
|
var Paragraph = BaseField.extend({
|
512
568
|
type: import_zod5.z.literal(FieldType.PARAGRAPH),
|
513
|
-
defaultValue:
|
569
|
+
defaultValue: NonEmptyTextValue.optional(),
|
514
570
|
configuration: import_zod5.z.object({
|
515
571
|
styles: import_zod5.z.object({
|
516
572
|
fontVariant: HtmlFontVariant.optional()
|
@@ -519,7 +575,7 @@ var Paragraph = BaseField.extend({
|
|
519
575
|
}).describe("A read-only HTML <p> paragraph");
|
520
576
|
var PageHeader = BaseField.extend({
|
521
577
|
type: import_zod5.z.literal(FieldType.PAGE_HEADER),
|
522
|
-
defaultValue:
|
578
|
+
defaultValue: NonEmptyTextValue.optional()
|
523
579
|
}).describe("A read-only header component for form pages");
|
524
580
|
var File = BaseField.extend({
|
525
581
|
type: import_zod5.z.literal(FieldType.FILE),
|
@@ -530,7 +586,8 @@ var File = BaseField.extend({
|
|
530
586
|
width: import_zod5.z.enum(["full", "auto"]).optional().describe(
|
531
587
|
"Whether the file upload button should take the full width of the container or not"
|
532
588
|
)
|
533
|
-
}).optional()
|
589
|
+
}).optional(),
|
590
|
+
fileName: TranslationConfig.optional()
|
534
591
|
}).default({
|
535
592
|
maxFileSize: DEFAULT_MAX_FILE_SIZE_BYTES
|
536
593
|
})
|
@@ -541,7 +598,7 @@ var SelectOption = import_zod5.z.object({
|
|
541
598
|
});
|
542
599
|
var RadioGroup = BaseField.extend({
|
543
600
|
type: import_zod5.z.literal(FieldType.RADIO_GROUP),
|
544
|
-
defaultValue:
|
601
|
+
defaultValue: TextValue.optional(),
|
545
602
|
options: import_zod5.z.array(SelectOption).describe("A list of options"),
|
546
603
|
configuration: import_zod5.z.object({
|
547
604
|
styles: import_zod5.z.object({
|
@@ -551,7 +608,7 @@ var RadioGroup = BaseField.extend({
|
|
551
608
|
}).describe("Grouped radio options");
|
552
609
|
var BulletList = BaseField.extend({
|
553
610
|
type: import_zod5.z.literal(FieldType.BULLET_LIST),
|
554
|
-
defaultValue:
|
611
|
+
defaultValue: TextValue.optional(),
|
555
612
|
items: import_zod5.z.array(TranslationConfig).describe("A list of items"),
|
556
613
|
configuration: import_zod5.z.object({
|
557
614
|
styles: import_zod5.z.object({
|
@@ -561,16 +618,16 @@ var BulletList = BaseField.extend({
|
|
561
618
|
}).describe("A list of bullet points");
|
562
619
|
var Select = BaseField.extend({
|
563
620
|
type: import_zod5.z.literal(FieldType.SELECT),
|
564
|
-
defaultValue:
|
621
|
+
defaultValue: TextValue.optional(),
|
565
622
|
options: import_zod5.z.array(SelectOption).describe("A list of options")
|
566
623
|
}).describe("Select input");
|
567
624
|
var Checkbox = BaseField.extend({
|
568
625
|
type: import_zod5.z.literal(FieldType.CHECKBOX),
|
569
|
-
defaultValue:
|
626
|
+
defaultValue: CheckboxFieldValue.optional()
|
570
627
|
}).describe("Boolean checkbox field");
|
571
628
|
var Country = BaseField.extend({
|
572
629
|
type: import_zod5.z.literal(FieldType.COUNTRY),
|
573
|
-
defaultValue:
|
630
|
+
defaultValue: NonEmptyTextValue.optional()
|
574
631
|
}).describe("Country select field");
|
575
632
|
var AdministrativeAreas = import_zod5.z.enum([
|
576
633
|
"ADMIN_STRUCTURE",
|
@@ -579,18 +636,18 @@ var AdministrativeAreas = import_zod5.z.enum([
|
|
579
636
|
]);
|
580
637
|
var AdministrativeAreaConfiguration = import_zod5.z.object({
|
581
638
|
partOf: import_zod5.z.object({
|
582
|
-
$
|
639
|
+
$declaration: import_zod5.z.string()
|
583
640
|
}).optional().describe("Parent location"),
|
584
641
|
type: AdministrativeAreas
|
585
642
|
}).describe("Administrative area options");
|
586
643
|
var AdministrativeArea = BaseField.extend({
|
587
644
|
type: import_zod5.z.literal(FieldType.ADMINISTRATIVE_AREA),
|
588
|
-
defaultValue:
|
645
|
+
defaultValue: NonEmptyTextValue.optional(),
|
589
646
|
configuration: AdministrativeAreaConfiguration
|
590
647
|
}).describe("Administrative area input field e.g. facility, office");
|
591
648
|
var Location = BaseField.extend({
|
592
649
|
type: import_zod5.z.literal(FieldType.LOCATION),
|
593
|
-
defaultValue:
|
650
|
+
defaultValue: NonEmptyTextValue.optional()
|
594
651
|
}).describe("Input field for a location");
|
595
652
|
var FileUploadWithOptions = BaseField.extend({
|
596
653
|
type: import_zod5.z.literal(FieldType.FILE_WITH_OPTIONS),
|
@@ -604,21 +661,30 @@ var FileUploadWithOptions = BaseField.extend({
|
|
604
661
|
});
|
605
662
|
var Facility = BaseField.extend({
|
606
663
|
type: import_zod5.z.literal(FieldType.FACILITY),
|
607
|
-
defaultValue:
|
664
|
+
defaultValue: NonEmptyTextValue.optional()
|
608
665
|
}).describe("Input field for a facility");
|
609
666
|
var Office = BaseField.extend({
|
610
667
|
type: import_zod5.z.literal(FieldType.OFFICE),
|
611
|
-
defaultValue:
|
668
|
+
defaultValue: NonEmptyTextValue.optional()
|
612
669
|
}).describe("Input field for an office");
|
613
670
|
var Address = BaseField.extend({
|
614
671
|
type: import_zod5.z.literal(FieldType.ADDRESS),
|
615
672
|
defaultValue: AddressFieldValue.optional()
|
616
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
|
+
]);
|
617
683
|
var DataField = BaseField.extend({
|
618
684
|
type: import_zod5.z.literal(FieldType.DATA),
|
619
685
|
configuration: import_zod5.z.object({
|
620
686
|
subtitle: TranslationConfig.optional(),
|
621
|
-
data: import_zod5.z.array(
|
687
|
+
data: import_zod5.z.array(DataEntry)
|
622
688
|
})
|
623
689
|
}).describe("Data field for displaying read-only data");
|
624
690
|
var FieldConfig = import_zod5.z.discriminatedUnion("type", [
|
@@ -646,21 +712,20 @@ var FieldConfig = import_zod5.z.discriminatedUnion("type", [
|
|
646
712
|
DataField
|
647
713
|
]);
|
648
714
|
|
649
|
-
// ../commons/src/events/
|
650
|
-
var
|
651
|
-
|
652
|
-
VERIFICATION: "VERIFICATION"
|
653
|
-
};
|
654
|
-
var FormPage = import_zod6.z.object({
|
715
|
+
// ../commons/src/events/PageConfig.ts
|
716
|
+
var PageTypes = import_zod6.z.enum(["FORM", "VERIFICATION"]);
|
717
|
+
var PageConfigBase = import_zod6.z.object({
|
655
718
|
id: import_zod6.z.string().describe("Unique identifier for the page"),
|
656
|
-
type: import_zod6.z.literal(FormPageType.FORM).default(FormPageType.FORM),
|
657
719
|
title: TranslationConfig.describe("Header title of the page"),
|
658
720
|
fields: import_zod6.z.array(FieldConfig).describe("Fields to be rendered on the page"),
|
659
|
-
conditional: Conditional
|
721
|
+
conditional: Conditional.optional().describe(
|
660
722
|
"Page will be shown if condition is met. If conditional is not defined, the page will be always shown."
|
661
723
|
)
|
662
724
|
});
|
663
|
-
var
|
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({
|
664
729
|
verify: import_zod6.z.object({ label: TranslationConfig }),
|
665
730
|
cancel: import_zod6.z.object({
|
666
731
|
label: TranslationConfig,
|
@@ -670,242 +735,304 @@ var VerificationPageConfig = import_zod6.z.object({
|
|
670
735
|
})
|
671
736
|
})
|
672
737
|
}).describe("Actions available on the verification page");
|
673
|
-
var
|
674
|
-
type: import_zod6.z.literal(
|
675
|
-
actions:
|
676
|
-
});
|
677
|
-
var FormPageConfig = import_zod6.z.preprocess(
|
678
|
-
(pageConfig) => ({
|
679
|
-
...pageConfig,
|
680
|
-
type: pageConfig.type ?? FormPageType.FORM
|
681
|
-
// Default type to "FORM" if not provided
|
682
|
-
}),
|
683
|
-
import_zod6.z.discriminatedUnion("type", [FormPage, VerificationPage])
|
684
|
-
);
|
685
|
-
var FormConfig = import_zod6.z.object({
|
686
|
-
label: TranslationConfig.describe("Human readable description of the form"),
|
687
|
-
version: import_zod6.z.object({
|
688
|
-
id: import_zod6.z.string().describe(
|
689
|
-
"Form version. Semantic versioning recommended. Example: 0.0.1"
|
690
|
-
),
|
691
|
-
label: TranslationConfig.describe(
|
692
|
-
"Human readable description of the version"
|
693
|
-
)
|
694
|
-
}),
|
695
|
-
active: import_zod6.z.boolean().default(false).describe("Whether the form is active"),
|
696
|
-
pages: import_zod6.z.array(FormPageConfig),
|
697
|
-
review: import_zod6.z.object({
|
698
|
-
title: TranslationConfig.describe(
|
699
|
-
"Title of the form to show in review page"
|
700
|
-
),
|
701
|
-
fields: import_zod6.z.array(FieldConfig).describe("Fields to be rendered on the review page for metadata")
|
702
|
-
})
|
738
|
+
var VerificationPageConfig = FormPageConfig.extend({
|
739
|
+
type: import_zod6.z.literal(PageTypes.enum.VERIFICATION),
|
740
|
+
actions: VerificationActionConfig
|
703
741
|
});
|
742
|
+
var PageConfig = import_zod6.z.discriminatedUnion("type", [
|
743
|
+
FormPageConfig,
|
744
|
+
VerificationPageConfig
|
745
|
+
]);
|
704
746
|
|
705
747
|
// ../commons/src/events/ActionType.ts
|
748
|
+
var import_zod7 = require("zod");
|
706
749
|
var ActionType = {
|
750
|
+
// Pre-declaration actions
|
751
|
+
DELETE: "DELETE",
|
707
752
|
CREATE: "CREATE",
|
708
|
-
ASSIGN: "ASSIGN",
|
709
|
-
UNASSIGN: "UNASSIGN",
|
710
|
-
REGISTER: "REGISTER",
|
711
|
-
VALIDATE: "VALIDATE",
|
712
|
-
REQUEST_CORRECTION: "REQUEST_CORRECTION",
|
713
|
-
REJECT_CORRECTION: "REJECT_CORRECTION",
|
714
|
-
APPROVE_CORRECTION: "APPROVE_CORRECTION",
|
715
|
-
DETECT_DUPLICATE: "DETECT_DUPLICATE",
|
716
753
|
NOTIFY: "NOTIFY",
|
754
|
+
// Declaration actions
|
717
755
|
DECLARE: "DECLARE",
|
718
|
-
|
719
|
-
|
720
|
-
|
756
|
+
VALIDATE: "VALIDATE",
|
757
|
+
REGISTER: "REGISTER",
|
758
|
+
// Declaration system actions. Non-configurable.
|
759
|
+
DETECT_DUPLICATE: "DETECT_DUPLICATE",
|
721
760
|
REJECT: "REJECT",
|
761
|
+
// REJECT_DECLARATION
|
722
762
|
MARKED_AS_DUPLICATE: "MARKED_AS_DUPLICATE",
|
723
|
-
|
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"
|
724
774
|
};
|
725
|
-
var
|
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]);
|
726
835
|
|
727
836
|
// ../commons/src/events/ActionConfig.ts
|
728
|
-
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", [
|
729
840
|
/** If conditional is defined, the action is shown to the user only if the condition is met */
|
730
841
|
ShowConditional,
|
731
842
|
/** If conditional is defined, the action is enabled only if the condition is met */
|
732
843
|
EnableConditional
|
733
844
|
]);
|
734
|
-
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({
|
735
850
|
label: TranslationConfig,
|
736
|
-
conditionals:
|
737
|
-
draft:
|
738
|
-
forms: import_zod7.z.array(FormConfig)
|
851
|
+
conditionals: import_zod9.z.array(ActionConditional2).optional().default([]),
|
852
|
+
draft: import_zod9.z.boolean().optional()
|
739
853
|
});
|
740
854
|
var DeclareConfig = ActionConfigBase.merge(
|
741
|
-
|
742
|
-
type:
|
855
|
+
import_zod9.z.object({
|
856
|
+
type: import_zod9.z.literal(ActionType.DECLARE),
|
857
|
+
review: DeclarationReviewConfig
|
743
858
|
})
|
744
859
|
);
|
745
860
|
var ValidateConfig = ActionConfigBase.merge(
|
746
|
-
|
747
|
-
type:
|
861
|
+
import_zod9.z.object({
|
862
|
+
type: import_zod9.z.literal(ActionType.VALIDATE),
|
863
|
+
review: DeclarationReviewConfig
|
864
|
+
})
|
865
|
+
);
|
866
|
+
var RegisterConfig = ActionConfigBase.merge(
|
867
|
+
import_zod9.z.object({
|
868
|
+
type: import_zod9.z.literal(ActionType.REGISTER),
|
869
|
+
review: DeclarationReviewConfig
|
748
870
|
})
|
749
871
|
);
|
750
872
|
var RejectDeclarationConfig = ActionConfigBase.merge(
|
751
|
-
|
752
|
-
type:
|
873
|
+
import_zod9.z.object({
|
874
|
+
type: import_zod9.z.literal(ActionType.REJECT)
|
753
875
|
})
|
754
876
|
);
|
755
877
|
var MarkedAsDuplicateConfig = ActionConfigBase.merge(
|
756
|
-
|
757
|
-
type:
|
878
|
+
import_zod9.z.object({
|
879
|
+
type: import_zod9.z.literal(ActionType.MARKED_AS_DUPLICATE)
|
758
880
|
})
|
759
881
|
);
|
760
882
|
var ArchiveConfig = ActionConfigBase.merge(
|
761
|
-
|
762
|
-
type:
|
763
|
-
})
|
764
|
-
);
|
765
|
-
var RegisterConfig = ActionConfigBase.merge(
|
766
|
-
import_zod7.z.object({
|
767
|
-
type: import_zod7.z.literal(ActionType.REGISTER)
|
883
|
+
import_zod9.z.object({
|
884
|
+
type: import_zod9.z.literal(ActionType.ARCHIVE)
|
768
885
|
})
|
769
886
|
);
|
770
887
|
var DeleteConfig = ActionConfigBase.merge(
|
771
|
-
|
772
|
-
type:
|
888
|
+
import_zod9.z.object({
|
889
|
+
type: import_zod9.z.literal(ActionType.DELETE)
|
773
890
|
})
|
774
891
|
);
|
775
892
|
var PrintCertificateActionConfig = ActionConfigBase.merge(
|
776
|
-
|
777
|
-
type:
|
893
|
+
import_zod9.z.object({
|
894
|
+
type: import_zod9.z.literal(ActionType.PRINT_CERTIFICATE),
|
895
|
+
printForm: ActionFormConfig
|
778
896
|
})
|
779
897
|
);
|
780
898
|
var RequestCorrectionConfig = ActionConfigBase.merge(
|
781
|
-
|
782
|
-
type:
|
783
|
-
onboardingForm:
|
784
|
-
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)
|
785
903
|
})
|
786
904
|
);
|
787
905
|
var RejectCorrectionConfig = ActionConfigBase.merge(
|
788
|
-
|
789
|
-
type:
|
906
|
+
import_zod9.z.object({
|
907
|
+
type: import_zod9.z.literal(ActionType.REJECT_CORRECTION)
|
790
908
|
})
|
791
909
|
);
|
792
910
|
var ApproveCorrectionConfig = ActionConfigBase.merge(
|
793
|
-
|
794
|
-
type:
|
911
|
+
import_zod9.z.object({
|
912
|
+
type: import_zod9.z.literal(ActionType.APPROVE_CORRECTION)
|
795
913
|
})
|
796
914
|
);
|
797
|
-
var
|
798
|
-
|
799
|
-
|
800
|
-
|
801
|
-
|
802
|
-
|
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", [
|
803
935
|
DeclareConfig,
|
804
936
|
ValidateConfig,
|
805
|
-
|
806
|
-
MarkedAsDuplicateConfig,
|
807
|
-
ArchiveConfig,
|
808
|
-
RegisterConfig,
|
809
|
-
DeleteConfig,
|
810
|
-
PrintCertificateActionConfig,
|
811
|
-
RequestCorrectionConfig,
|
812
|
-
RejectCorrectionConfig,
|
813
|
-
ApproveCorrectionConfig,
|
814
|
-
CustomConfig
|
937
|
+
RegisterConfig
|
815
938
|
]);
|
816
939
|
|
817
940
|
// ../commons/src/events/offline/CertificateConfig.ts
|
818
|
-
var
|
819
|
-
var FontFamily =
|
820
|
-
normal:
|
821
|
-
bold:
|
822
|
-
italics:
|
823
|
-
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()
|
824
947
|
});
|
825
|
-
var CertificateConfig =
|
826
|
-
id:
|
827
|
-
event:
|
948
|
+
var CertificateConfig = import_zod10.z.object({
|
949
|
+
id: import_zod10.z.string(),
|
950
|
+
event: import_zod10.z.string(),
|
828
951
|
label: TranslationConfig,
|
829
|
-
isDefault:
|
830
|
-
fee:
|
831
|
-
onTime:
|
832
|
-
late:
|
833
|
-
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()
|
834
957
|
}),
|
835
|
-
svgUrl:
|
836
|
-
fonts:
|
958
|
+
svgUrl: import_zod10.z.string(),
|
959
|
+
fonts: import_zod10.z.record(FontFamily).optional()
|
837
960
|
});
|
838
961
|
var CertificateTemplateConfig = CertificateConfig.extend({
|
839
|
-
hash:
|
840
|
-
svg:
|
962
|
+
hash: import_zod10.z.string().optional(),
|
963
|
+
svg: import_zod10.z.string()
|
841
964
|
});
|
842
965
|
|
843
966
|
// ../commons/src/events/offline/LanguageConfig.ts
|
844
|
-
var
|
845
|
-
var LanguageConfig =
|
846
|
-
lang:
|
967
|
+
var import_zod11 = require("zod");
|
968
|
+
var LanguageConfig = import_zod11.z.object({
|
969
|
+
lang: import_zod11.z.string(),
|
847
970
|
/**
|
848
971
|
* client.csv contents
|
849
972
|
*/
|
850
|
-
messages:
|
973
|
+
messages: import_zod11.z.record(import_zod11.z.string())
|
851
974
|
});
|
852
975
|
|
853
976
|
// ../commons/src/events/EventConfig.ts
|
854
|
-
var
|
977
|
+
var import_zod16 = require("zod");
|
855
978
|
|
856
979
|
// ../commons/src/events/DeduplicationConfig.ts
|
857
|
-
var
|
858
|
-
var
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
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()
|
863
988
|
}).optional().default({})
|
864
989
|
});
|
865
990
|
var FuzzyMatcher = Matcher.extend({
|
866
|
-
type:
|
867
|
-
options:
|
991
|
+
type: import_zod12.z.literal("fuzzy"),
|
992
|
+
options: import_zod12.z.object({
|
868
993
|
/**
|
869
994
|
* Names of length 3 or less characters = 0 edits allowed
|
870
995
|
* Names of length 4 - 6 characters = 1 edit allowed
|
871
996
|
* Names of length >7 characters = 2 edits allowed
|
872
997
|
*/
|
873
|
-
fuzziness:
|
874
|
-
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)
|
875
1000
|
}).optional().default({})
|
876
1001
|
});
|
877
1002
|
var StrictMatcher = Matcher.extend({
|
878
|
-
type:
|
879
|
-
options:
|
880
|
-
boost:
|
1003
|
+
type: import_zod12.z.literal("strict"),
|
1004
|
+
options: import_zod12.z.object({
|
1005
|
+
boost: import_zod12.z.number().optional().default(1)
|
881
1006
|
}).optional().default({})
|
882
1007
|
});
|
883
1008
|
var DateRangeMatcher = Matcher.extend({
|
884
|
-
type:
|
885
|
-
options:
|
886
|
-
days:
|
1009
|
+
type: import_zod12.z.literal("dateRange"),
|
1010
|
+
options: import_zod12.z.object({
|
1011
|
+
days: import_zod12.z.number(),
|
887
1012
|
origin: FieldReference,
|
888
|
-
boost:
|
1013
|
+
boost: import_zod12.z.number().optional().default(1)
|
889
1014
|
})
|
890
1015
|
});
|
891
1016
|
var DateDistanceMatcher = Matcher.extend({
|
892
|
-
type:
|
893
|
-
options:
|
894
|
-
days:
|
1017
|
+
type: import_zod12.z.literal("dateDistance"),
|
1018
|
+
options: import_zod12.z.object({
|
1019
|
+
days: import_zod12.z.number(),
|
895
1020
|
origin: FieldReference,
|
896
|
-
boost:
|
1021
|
+
boost: import_zod12.z.number().optional().default(1)
|
897
1022
|
})
|
898
1023
|
});
|
899
|
-
var And =
|
900
|
-
type:
|
901
|
-
|
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())
|
902
1028
|
});
|
903
|
-
var Or =
|
904
|
-
type:
|
905
|
-
|
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())
|
906
1033
|
});
|
907
|
-
var Clause =
|
908
|
-
() =>
|
1034
|
+
var Clause = import_zod12.z.lazy(
|
1035
|
+
() => import_zod12.z.discriminatedUnion("type", [
|
909
1036
|
And,
|
910
1037
|
Or,
|
911
1038
|
FuzzyMatcher,
|
@@ -913,275 +1040,73 @@ var Clause = import_zod10.z.lazy(
|
|
913
1040
|
DateRangeMatcher,
|
914
1041
|
DateDistanceMatcher
|
915
1042
|
])
|
916
|
-
)
|
917
|
-
|
918
|
-
|
1043
|
+
).openapi({
|
1044
|
+
ref: "Clause"
|
1045
|
+
});
|
1046
|
+
var DeduplicationConfig = import_zod12.z.object({
|
1047
|
+
id: import_zod12.z.string(),
|
919
1048
|
label: TranslationConfig,
|
920
1049
|
query: Clause
|
921
1050
|
});
|
922
1051
|
|
923
1052
|
// ../commons/src/events/SummaryConfig.ts
|
924
|
-
var
|
925
|
-
var
|
926
|
-
|
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"),
|
927
1063
|
value: TranslationConfig.describe(
|
928
1064
|
"Summary field value. Can utilise values defined in configuration and EventMetadata"
|
929
1065
|
),
|
930
1066
|
label: TranslationConfig,
|
931
1067
|
emptyValueMessage: TranslationConfig.optional()
|
932
|
-
});
|
933
|
-
var
|
934
|
-
|
935
|
-
label: TranslationConfig.describe("Title content"),
|
936
|
-
emptyValueMessage: TranslationConfig.optional()
|
937
|
-
});
|
938
|
-
var SummaryConfig = import_zod11.z.object({
|
939
|
-
title: Title.describe("Title of summary view."),
|
940
|
-
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.")
|
941
1071
|
}).describe("Configuration for summary in event.");
|
942
1072
|
|
943
|
-
// ../commons/src/events/WorkqueueConfig.ts
|
944
|
-
var import_zod13 = require("zod");
|
945
|
-
|
946
|
-
// ../commons/src/events/EventMetadata.ts
|
947
|
-
var import_zod12 = require("zod");
|
948
|
-
var EventStatus = {
|
949
|
-
CREATED: "CREATED",
|
950
|
-
NOTIFIED: "NOTIFIED",
|
951
|
-
DECLARED: "DECLARED",
|
952
|
-
VALIDATED: "VALIDATED",
|
953
|
-
REGISTERED: "REGISTERED",
|
954
|
-
CERTIFIED: "CERTIFIED",
|
955
|
-
REJECTED: "REJECTED",
|
956
|
-
ARCHIVED: "ARCHIVED"
|
957
|
-
};
|
958
|
-
var eventStatuses = Object.values(EventStatus);
|
959
|
-
var EventStatuses = import_zod12.z.nativeEnum(EventStatus);
|
960
|
-
var EventMetadata = import_zod12.z.object({
|
961
|
-
id: import_zod12.z.string(),
|
962
|
-
type: import_zod12.z.string(),
|
963
|
-
status: EventStatuses,
|
964
|
-
createdAt: import_zod12.z.string().datetime(),
|
965
|
-
createdBy: import_zod12.z.string(),
|
966
|
-
createdAtLocation: import_zod12.z.string(),
|
967
|
-
modifiedAt: import_zod12.z.string().datetime(),
|
968
|
-
assignedTo: import_zod12.z.string().nullish(),
|
969
|
-
updatedBy: import_zod12.z.string(),
|
970
|
-
trackingId: import_zod12.z.string()
|
971
|
-
});
|
972
|
-
var eventMetadataLabelMap = {
|
973
|
-
"event.assignedTo": {
|
974
|
-
id: "event.assignedTo.label",
|
975
|
-
defaultMessage: "Assigned To",
|
976
|
-
description: "Assigned To"
|
977
|
-
},
|
978
|
-
"event.createdAt": {
|
979
|
-
id: "event.createdAt.label",
|
980
|
-
defaultMessage: "Created",
|
981
|
-
description: "Created At"
|
982
|
-
},
|
983
|
-
"event.createdAtLocation": {
|
984
|
-
id: "event.createdAtLocation.label",
|
985
|
-
defaultMessage: "Location",
|
986
|
-
description: "Created At Location"
|
987
|
-
},
|
988
|
-
"event.createdBy": {
|
989
|
-
id: "event.createdBy.label",
|
990
|
-
defaultMessage: "Created By",
|
991
|
-
description: "Created By"
|
992
|
-
},
|
993
|
-
"event.id": {
|
994
|
-
id: "event.id.label",
|
995
|
-
defaultMessage: "ID",
|
996
|
-
description: "ID"
|
997
|
-
},
|
998
|
-
"event.modifiedAt": {
|
999
|
-
id: "event.modifiedAt.label",
|
1000
|
-
defaultMessage: "Updated",
|
1001
|
-
description: "Modified At"
|
1002
|
-
},
|
1003
|
-
"event.status": {
|
1004
|
-
id: "event.status.label",
|
1005
|
-
defaultMessage: "Status",
|
1006
|
-
description: "Status"
|
1007
|
-
},
|
1008
|
-
"event.type": {
|
1009
|
-
id: "event.type.label",
|
1010
|
-
defaultMessage: "Type",
|
1011
|
-
description: "Type"
|
1012
|
-
},
|
1013
|
-
"event.updatedBy": {
|
1014
|
-
id: "event.updatedBy.label",
|
1015
|
-
defaultMessage: "Updated By",
|
1016
|
-
description: "Updated By"
|
1017
|
-
},
|
1018
|
-
"event.trackingId": {
|
1019
|
-
id: "event.trackingId.label",
|
1020
|
-
defaultMessage: "Tracking ID",
|
1021
|
-
description: "Tracking ID"
|
1022
|
-
}
|
1023
|
-
};
|
1024
|
-
|
1025
|
-
// ../commons/src/events/WorkqueueConfig.ts
|
1026
|
-
var WorkqueueConfig = import_zod13.z.object({
|
1027
|
-
id: import_zod13.z.string().describe("Unique identifier for workqueue."),
|
1028
|
-
filters: import_zod13.z.array(
|
1029
|
-
import_zod13.z.object({
|
1030
|
-
status: import_zod13.z.array(EventStatuses).describe("Defines which statusese are included in the workqueue.")
|
1031
|
-
})
|
1032
|
-
).describe("Filters to be applied to workqueue.")
|
1033
|
-
}).describe("Configuration for workqueue.");
|
1034
|
-
|
1035
1073
|
// ../commons/src/events/AdvancedSearchConfig.ts
|
1036
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
|
+
]);
|
1037
1095
|
var AdvancedSearchConfig = import_zod14.z.object({
|
1038
1096
|
title: TranslationConfig.describe("Advanced search tab title"),
|
1039
|
-
fields: import_zod14.z.array(
|
1040
|
-
import_zod14.z.object({
|
1041
|
-
fieldId: import_zod14.z.string(),
|
1042
|
-
config: import_zod14.z.object({
|
1043
|
-
type: import_zod14.z.enum(["FUZZY", "EXACT", "RANGE"]).describe("Determines the type of field")
|
1044
|
-
}).optional().describe("Configuration options for the field")
|
1045
|
-
})
|
1046
|
-
).optional().default([]).describe("Advanced search fields.")
|
1097
|
+
fields: import_zod14.z.array(SearchField).describe("Advanced search fields.")
|
1047
1098
|
});
|
1048
1099
|
|
1049
1100
|
// ../commons/src/events/utils.ts
|
1050
1101
|
var import_lodash = require("lodash");
|
1051
1102
|
|
1052
|
-
// ../commons/src/workqueues/WorkqueueConfig.ts
|
1053
|
-
var import_zod16 = require("zod");
|
1054
|
-
|
1055
|
-
// ../commons/src/workqueues/defaultColumns.ts
|
1056
|
-
var import_zod15 = require("zod");
|
1057
|
-
var WorkQueueColumnConfig = import_zod15.z.object({
|
1058
|
-
id: import_zod15.z.string(),
|
1059
|
-
label: TranslationConfig
|
1060
|
-
});
|
1061
|
-
var defaultColumns = {
|
1062
|
-
event: {
|
1063
|
-
id: "event",
|
1064
|
-
label: {
|
1065
|
-
defaultMessage: "Event",
|
1066
|
-
description: "This is the label for the workqueue column",
|
1067
|
-
id: "workqueue.default.column.event"
|
1068
|
-
}
|
1069
|
-
},
|
1070
|
-
status: {
|
1071
|
-
id: "status",
|
1072
|
-
label: {
|
1073
|
-
defaultMessage: "Status",
|
1074
|
-
description: "This is the label for the workqueue column",
|
1075
|
-
id: "workqueue.default.column.status"
|
1076
|
-
}
|
1077
|
-
},
|
1078
|
-
createdAt: {
|
1079
|
-
id: "createdAt",
|
1080
|
-
label: {
|
1081
|
-
defaultMessage: "Created",
|
1082
|
-
description: "This is the label for the workqueue column",
|
1083
|
-
id: "workqueue.default.column.createdAt"
|
1084
|
-
}
|
1085
|
-
},
|
1086
|
-
modifiedAt: {
|
1087
|
-
id: "modifiedAt",
|
1088
|
-
label: {
|
1089
|
-
defaultMessage: "Modified",
|
1090
|
-
description: "This is the label for the workqueue column",
|
1091
|
-
id: "workqueue.default.column.modifiedAt"
|
1092
|
-
}
|
1093
|
-
}
|
1094
|
-
};
|
1095
|
-
var DefaultColumnKeys = import_zod15.z.enum(
|
1096
|
-
Object.keys(defaultColumns)
|
1097
|
-
);
|
1098
|
-
|
1099
|
-
// ../commons/src/workqueues/WorkqueueConfig.ts
|
1100
|
-
var rootWorkqueueConfig = import_zod16.z.object({
|
1101
|
-
id: import_zod16.z.string(),
|
1102
|
-
title: TranslationConfig,
|
1103
|
-
columns: import_zod16.z.array(WorkQueueColumnConfig),
|
1104
|
-
defaultColumns: import_zod16.z.array(DefaultColumnKeys)
|
1105
|
-
});
|
1106
|
-
var defineWorkqueue = (config) => rootWorkqueueConfig.parse(config);
|
1107
|
-
|
1108
|
-
// ../commons/src/workqueues/all.ts
|
1109
|
-
var allWorkqueue = defineWorkqueue({
|
1110
|
-
id: "all",
|
1111
|
-
title: {
|
1112
|
-
defaultMessage: "All events",
|
1113
|
-
description: "This is the label for the workqueue",
|
1114
|
-
id: "workqueue.all.label"
|
1115
|
-
},
|
1116
|
-
columns: [
|
1117
|
-
{
|
1118
|
-
id: "title",
|
1119
|
-
label: {
|
1120
|
-
defaultMessage: "Title",
|
1121
|
-
description: "This is the label for the workqueue column",
|
1122
|
-
id: "workqueue.all.column.title"
|
1123
|
-
}
|
1124
|
-
}
|
1125
|
-
],
|
1126
|
-
defaultColumns: ["event", "status", "createdAt", "modifiedAt"]
|
1127
|
-
});
|
1128
|
-
|
1129
|
-
// ../commons/src/workqueues/readyForReview.ts
|
1130
|
-
var inReviewWorkqueue = defineWorkqueue({
|
1131
|
-
id: "ready-for-review",
|
1132
|
-
title: {
|
1133
|
-
defaultMessage: "Ready for review",
|
1134
|
-
description: "Label for in review workqueue",
|
1135
|
-
id: "event.workqueue.in-review.label"
|
1136
|
-
},
|
1137
|
-
columns: [
|
1138
|
-
{
|
1139
|
-
id: "title",
|
1140
|
-
label: {
|
1141
|
-
defaultMessage: "Title",
|
1142
|
-
description: "This is the label for the workqueue column",
|
1143
|
-
id: "workqueue.in-reveiw.column.title"
|
1144
|
-
}
|
1145
|
-
}
|
1146
|
-
],
|
1147
|
-
defaultColumns: ["event", "createdAt", "modifiedAt"]
|
1148
|
-
});
|
1149
|
-
|
1150
|
-
// ../commons/src/workqueues/readyToPrint.ts
|
1151
|
-
var registeredWorkqueue = defineWorkqueue({
|
1152
|
-
id: "registered",
|
1153
|
-
title: {
|
1154
|
-
defaultMessage: "Ready to print",
|
1155
|
-
description: "Label for registered workqueue",
|
1156
|
-
id: "event.workqueue.registered.label"
|
1157
|
-
},
|
1158
|
-
columns: [
|
1159
|
-
{
|
1160
|
-
id: "title",
|
1161
|
-
label: {
|
1162
|
-
defaultMessage: "Title",
|
1163
|
-
description: "This is the label for the workqueue column",
|
1164
|
-
id: "workqueue.registered.column.title"
|
1165
|
-
}
|
1166
|
-
}
|
1167
|
-
],
|
1168
|
-
defaultColumns: ["event", "createdAt", "modifiedAt"]
|
1169
|
-
});
|
1170
|
-
|
1171
|
-
// ../commons/src/workqueues/index.ts
|
1172
|
-
var workqueues = {
|
1173
|
-
all: allWorkqueue,
|
1174
|
-
registered: registeredWorkqueue,
|
1175
|
-
inReview: inReviewWorkqueue
|
1176
|
-
};
|
1177
|
-
|
1178
1103
|
// ../commons/src/conditionals/validate.ts
|
1179
1104
|
var import_ajv = __toESM(require("ajv"));
|
1180
1105
|
var import_ajv_formats = __toESM(require("ajv-formats"));
|
1181
1106
|
var import_date_fns = require("date-fns");
|
1182
1107
|
|
1183
1108
|
// ../commons/src/events/FieldTypeMapping.ts
|
1184
|
-
var
|
1109
|
+
var import_zod15 = require("zod");
|
1185
1110
|
function mapFieldTypeToZod(type, required) {
|
1186
1111
|
let schema;
|
1187
1112
|
switch (type) {
|
@@ -1205,8 +1130,7 @@ function mapFieldTypeToZod(type, required) {
|
|
1205
1130
|
case FieldType.FACILITY:
|
1206
1131
|
case FieldType.OFFICE:
|
1207
1132
|
case FieldType.SIGNATURE:
|
1208
|
-
|
1209
|
-
schema = required ? RequiredTextValue : TextValue;
|
1133
|
+
schema = required ? NonEmptyTextValue : TextValue;
|
1210
1134
|
break;
|
1211
1135
|
case FieldType.NUMBER:
|
1212
1136
|
schema = NumberFieldValue;
|
@@ -1234,7 +1158,7 @@ function createValidationSchema(config) {
|
|
1234
1158
|
for (const field2 of config) {
|
1235
1159
|
shape[field2.id] = mapFieldTypeToZod(field2.type, field2.required);
|
1236
1160
|
}
|
1237
|
-
return
|
1161
|
+
return import_zod15.z.object(shape);
|
1238
1162
|
}
|
1239
1163
|
function mapFieldTypeToMockValue(field2, i) {
|
1240
1164
|
switch (field2.type) {
|
@@ -1401,18 +1325,30 @@ var isDataFieldType = (field2) => {
|
|
1401
1325
|
|
1402
1326
|
// ../commons/src/conditionals/validate.ts
|
1403
1327
|
var ajv = new import_ajv.default({
|
1404
|
-
$data: true
|
1328
|
+
$data: true,
|
1329
|
+
allowUnionTypes: true
|
1405
1330
|
});
|
1406
1331
|
(0, import_ajv_formats.default)(ajv);
|
1407
1332
|
function validate(schema, data) {
|
1408
1333
|
return ajv.validate(schema, data);
|
1409
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
|
+
}
|
1410
1341
|
function getConditionalActionsForField(field2, values) {
|
1411
1342
|
if (!field2.conditionals) {
|
1412
1343
|
return [];
|
1413
1344
|
}
|
1414
1345
|
return field2.conditionals.filter((conditional) => validate(conditional.conditional, values)).map((conditional) => conditional.type);
|
1415
1346
|
}
|
1347
|
+
function areConditionsMet(conditions, values) {
|
1348
|
+
return conditions.every(
|
1349
|
+
(condition) => isConditionMet(condition.conditional, values)
|
1350
|
+
);
|
1351
|
+
}
|
1416
1352
|
function isFieldConditionMet(field2, form, conditionalType) {
|
1417
1353
|
const hasRule = (field2.conditionals ?? []).some(
|
1418
1354
|
(conditional) => conditional.type === conditionalType
|
@@ -1431,9 +1367,16 @@ function isFieldConditionMet(field2, form, conditionalType) {
|
|
1431
1367
|
function isFieldVisible(field2, form) {
|
1432
1368
|
return isFieldConditionMet(field2, form, ConditionalType.SHOW);
|
1433
1369
|
}
|
1370
|
+
function isFieldEmptyAndNotRequired(field2, form) {
|
1371
|
+
const fieldValue = form[field2.id];
|
1372
|
+
return !field2.required && (fieldValue === void 0 || fieldValue === "");
|
1373
|
+
}
|
1434
1374
|
function isFieldEnabled(field2, form) {
|
1435
1375
|
return isFieldConditionMet(field2, form, ConditionalType.ENABLE);
|
1436
1376
|
}
|
1377
|
+
function isFieldDisplayedOnReview(field2, form) {
|
1378
|
+
return isFieldVisible(field2, form) && isFieldConditionMet(field2, form, ConditionalType.DISPLAY_ON_REVIEW);
|
1379
|
+
}
|
1437
1380
|
var errorMessages = {
|
1438
1381
|
hiddenField: {
|
1439
1382
|
id: "v2.error.hidden",
|
@@ -1461,12 +1404,14 @@ var errorMessages = {
|
|
1461
1404
|
id: "v2.error.invalid"
|
1462
1405
|
}
|
1463
1406
|
};
|
1464
|
-
|
1465
|
-
|
1466
|
-
message
|
1467
|
-
|
1468
|
-
}
|
1469
|
-
|
1407
|
+
function createIntlError(message) {
|
1408
|
+
return {
|
1409
|
+
message: {
|
1410
|
+
message
|
1411
|
+
}
|
1412
|
+
};
|
1413
|
+
}
|
1414
|
+
function zodToIntlErrorMap(issue, _ctx) {
|
1470
1415
|
switch (issue.code) {
|
1471
1416
|
case "invalid_string": {
|
1472
1417
|
if (_ctx.data === "") {
|
@@ -1504,45 +1449,10 @@ var zodToIntlErrorMap = (issue, _ctx) => {
|
|
1504
1449
|
}
|
1505
1450
|
}
|
1506
1451
|
return createIntlError(errorMessages.invalidInput);
|
1507
|
-
}
|
1508
|
-
function
|
1452
|
+
}
|
1453
|
+
function runCustomFieldValidations({
|
1509
1454
|
field: field2,
|
1510
|
-
|
1511
|
-
}) {
|
1512
|
-
const conditionalParameters = {
|
1513
|
-
$form: values,
|
1514
|
-
$now: (0, import_date_fns.formatISO)(/* @__PURE__ */ new Date(), { representation: "date" })
|
1515
|
-
};
|
1516
|
-
if (!isFieldVisible(field2, values) || !isFieldEnabled(field2, values)) {
|
1517
|
-
if (values[field2.id]) {
|
1518
|
-
return {
|
1519
|
-
errors: [
|
1520
|
-
{
|
1521
|
-
message: errorMessages.hiddenField
|
1522
|
-
}
|
1523
|
-
]
|
1524
|
-
};
|
1525
|
-
}
|
1526
|
-
return {
|
1527
|
-
errors: []
|
1528
|
-
};
|
1529
|
-
}
|
1530
|
-
const fieldValidationResult = validateFieldInput({
|
1531
|
-
field: field2,
|
1532
|
-
value: values[field2.id]
|
1533
|
-
});
|
1534
|
-
const customValidationResults = runCustomFieldValidations({
|
1535
|
-
field: field2,
|
1536
|
-
conditionalParameters
|
1537
|
-
});
|
1538
|
-
return {
|
1539
|
-
// Assumes that custom validation errors are based on the field type, and extend the validation.
|
1540
|
-
errors: [...fieldValidationResult, ...customValidationResults]
|
1541
|
-
};
|
1542
|
-
}
|
1543
|
-
function runCustomFieldValidations({
|
1544
|
-
field: field2,
|
1545
|
-
conditionalParameters
|
1455
|
+
conditionalParameters
|
1546
1456
|
}) {
|
1547
1457
|
return (field2.validation ?? []).filter((validation) => {
|
1548
1458
|
return !validate(validation.validator, conditionalParameters);
|
@@ -1561,13 +1471,31 @@ function validateFieldInput({
|
|
1561
1471
|
);
|
1562
1472
|
return rawError.error?.issues.map((issue) => issue.message) ?? [];
|
1563
1473
|
}
|
1564
|
-
|
1565
|
-
|
1566
|
-
|
1567
|
-
|
1568
|
-
|
1474
|
+
function runFieldValidations({
|
1475
|
+
field: field2,
|
1476
|
+
values
|
1477
|
+
}) {
|
1478
|
+
if (!isFieldVisible(field2, values) || isFieldEmptyAndNotRequired(field2, values)) {
|
1479
|
+
return {
|
1480
|
+
errors: []
|
1481
|
+
};
|
1569
1482
|
}
|
1570
|
-
|
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]
|
1490
|
+
});
|
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
|
+
};
|
1571
1499
|
}
|
1572
1500
|
|
1573
1501
|
// ../commons/src/uuid.ts
|
@@ -1576,161 +1504,91 @@ function getUUID() {
|
|
1576
1504
|
return (0, import_uuid.v4)();
|
1577
1505
|
}
|
1578
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;
|
1513
|
+
}
|
1514
|
+
|
1579
1515
|
// ../commons/src/events/utils.ts
|
1580
|
-
|
1581
|
-
|
1582
|
-
return field2 in eventMetadataLabelMap;
|
1583
|
-
}
|
1584
|
-
var findInputPageFields = (config) => {
|
1585
|
-
return (0, import_lodash.flattenDeep)(
|
1586
|
-
config.actions.map(
|
1587
|
-
({ forms }) => forms.map(
|
1588
|
-
({ pages }) => pages.map(
|
1589
|
-
({ fields }) => fields.map(({ id, label }) => ({ id, label }))
|
1590
|
-
)
|
1591
|
-
)
|
1592
|
-
)
|
1593
|
-
);
|
1594
|
-
};
|
1595
|
-
var findPageFields = (config) => {
|
1596
|
-
return (0, import_lodash.flattenDeep)(
|
1597
|
-
config.actions.map((action) => {
|
1598
|
-
if (action.type === ActionType.REQUEST_CORRECTION) {
|
1599
|
-
return [
|
1600
|
-
...action.forms.map(({ pages }) => pages.map(({ fields }) => fields)),
|
1601
|
-
...action.onboardingForm.flatMap(({ fields }) => fields),
|
1602
|
-
...action.additionalDetailsForm.flatMap(({ fields }) => fields)
|
1603
|
-
];
|
1604
|
-
}
|
1605
|
-
return action.forms.map(({ pages }) => pages.map(({ fields }) => fields));
|
1606
|
-
})
|
1607
|
-
);
|
1608
|
-
};
|
1609
|
-
var resolveLabelsFromKnownFields = ({
|
1610
|
-
pageFields,
|
1611
|
-
refFields
|
1612
|
-
}) => {
|
1613
|
-
return refFields.map((field2) => {
|
1614
|
-
if (field2.label) {
|
1615
|
-
return field2;
|
1616
|
-
}
|
1617
|
-
if (isMetadataField(field2.id)) {
|
1618
|
-
return {
|
1619
|
-
...field2,
|
1620
|
-
label: eventMetadataLabelMap[field2.id]
|
1621
|
-
};
|
1622
|
-
}
|
1623
|
-
const pageLabel = pageFields.find((pageField) => pageField.id === field2.id);
|
1624
|
-
if (!pageLabel) {
|
1625
|
-
throw new Error(`Referenced field ${field2.id} does not have a label`);
|
1626
|
-
}
|
1627
|
-
return {
|
1628
|
-
...field2,
|
1629
|
-
label: pageLabel.label
|
1630
|
-
};
|
1631
|
-
});
|
1632
|
-
};
|
1633
|
-
function getAllFields(configuration) {
|
1634
|
-
return configuration.actions.flatMap((action) => action.forms.filter((form) => form.active)).flatMap((form) => [
|
1635
|
-
...form.review.fields,
|
1636
|
-
...form.pages.flatMap((page) => page.fields)
|
1637
|
-
]);
|
1516
|
+
function isDeclarationActionConfig(action) {
|
1517
|
+
return DeclarationActions.safeParse(action.type).success;
|
1638
1518
|
}
|
1639
|
-
function
|
1640
|
-
return configuration.
|
1519
|
+
function getDeclarationFields(configuration) {
|
1520
|
+
return configuration.declaration.pages.flatMap(({ fields }) => fields);
|
1641
1521
|
}
|
1642
|
-
function
|
1643
|
-
|
1644
|
-
const rootWorkqueue = Object.values(workqueues).find(
|
1645
|
-
(wq) => wq.id === workqueue.id
|
1646
|
-
);
|
1647
|
-
if (!rootWorkqueue) {
|
1648
|
-
throw new Error(
|
1649
|
-
`Invalid workqueue configuration: workqueue not found with id: ${workqueue.id}`
|
1650
|
-
);
|
1651
|
-
}
|
1652
|
-
});
|
1522
|
+
function getDeclarationPages(configuration) {
|
1523
|
+
return configuration.declaration.pages;
|
1653
1524
|
}
|
1654
|
-
|
1655
|
-
|
1656
|
-
const form = actionConfig?.forms.find((f) => f.active);
|
1657
|
-
return form;
|
1658
|
-
};
|
1659
|
-
var findActiveActionFormPages = (configuration, action) => {
|
1660
|
-
return findActiveActionForm(configuration, action)?.pages;
|
1661
|
-
};
|
1662
|
-
var getFormFields = (formConfig) => {
|
1663
|
-
return formConfig.pages.flatMap((p) => p.fields);
|
1664
|
-
};
|
1665
|
-
function isPageVisible(page, formValues) {
|
1666
|
-
if (!page.conditional) {
|
1667
|
-
return true;
|
1668
|
-
}
|
1669
|
-
return validate(page.conditional, {
|
1670
|
-
$form: formValues,
|
1671
|
-
$now: (0, import_date_fns2.formatISO)(/* @__PURE__ */ new Date(), { representation: "date" })
|
1672
|
-
});
|
1525
|
+
function getDeclaration(configuration) {
|
1526
|
+
return configuration.declaration;
|
1673
1527
|
}
|
1674
|
-
var
|
1675
|
-
|
1676
|
-
|
1677
|
-
|
1678
|
-
|
1679
|
-
|
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;
|
1540
|
+
}
|
1541
|
+
return [];
|
1680
1542
|
};
|
1681
|
-
|
1682
|
-
|
1683
|
-
|
1684
|
-
|
1685
|
-
|
1686
|
-
|
1543
|
+
function getAllAnnotationFields(config) {
|
1544
|
+
return (0, import_lodash.flattenDeep)(config.actions.map(getActionAnnotationFields));
|
1545
|
+
}
|
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;
|
1687
1553
|
}
|
1688
|
-
|
1689
|
-
return allFields;
|
1554
|
+
return [];
|
1690
1555
|
};
|
1691
|
-
|
1556
|
+
function getActionReview(configuration, actionType) {
|
1557
|
+
const [actionConfig] = configuration.actions.filter(
|
1558
|
+
(a) => a.type === actionType
|
1559
|
+
);
|
1692
1560
|
return getOrThrow(
|
1693
|
-
|
1694
|
-
|
1561
|
+
actionConfig.review,
|
1562
|
+
`No review config found for ${actionType}`
|
1695
1563
|
);
|
1696
|
-
};
|
1697
|
-
function getActiveActionFields(configuration, action) {
|
1698
|
-
if (LatentActions.some((latentAction) => latentAction === action)) {
|
1699
|
-
return getActiveActionFields(configuration, ActionType.DECLARE);
|
1700
|
-
}
|
1701
|
-
const fields = findActiveActionFields(configuration, action);
|
1702
|
-
if (!fields) {
|
1703
|
-
throw new Error(`No active field config found for action type ${action}`);
|
1704
|
-
}
|
1705
|
-
return fields;
|
1706
1564
|
}
|
1707
|
-
function
|
1708
|
-
|
1709
|
-
if (!config) {
|
1710
|
-
throw new Error(`Event configuration not found for type: ${type}`);
|
1711
|
-
}
|
1712
|
-
return config;
|
1565
|
+
function getActionReviewFields(configuration, actionType) {
|
1566
|
+
return getActionReview(configuration, actionType).fields;
|
1713
1567
|
}
|
1714
|
-
function
|
1715
|
-
if (
|
1716
|
-
return
|
1568
|
+
function isPageVisible(page, formValues) {
|
1569
|
+
if (!page.conditional) {
|
1570
|
+
return true;
|
1717
1571
|
}
|
1718
|
-
return
|
1572
|
+
return isConditionMet(page.conditional, formValues);
|
1719
1573
|
}
|
1720
|
-
function
|
1721
|
-
return (0, import_lodash.omitBy)(
|
1722
|
-
|
1723
|
-
|
1724
|
-
return true;
|
1574
|
+
function omitHiddenFields(fields, values, visibleVerificationPageIds = []) {
|
1575
|
+
return (0, import_lodash.omitBy)(values, (_, fieldId) => {
|
1576
|
+
if (visibleVerificationPageIds.includes(fieldId)) {
|
1577
|
+
return false;
|
1725
1578
|
}
|
1726
|
-
|
1579
|
+
const fieldConfigs = fields.filter((f) => f.id === fieldId);
|
1580
|
+
if (!fieldConfigs.length) {
|
1727
1581
|
return true;
|
1728
1582
|
}
|
1729
|
-
return !isFieldVisible(
|
1583
|
+
return fieldConfigs.every((f) => !isFieldVisible(f, values));
|
1730
1584
|
});
|
1731
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
|
+
}
|
1732
1590
|
function findActiveDrafts(event2, drafts) {
|
1733
|
-
const actions = event2.actions.slice().sort((a, b) => a.createdAt.localeCompare(b.createdAt));
|
1591
|
+
const actions = event2.actions.slice().filter(({ type }) => type !== ActionType.READ).sort((a, b) => a.createdAt.localeCompare(b.createdAt));
|
1734
1592
|
const lastAction = actions[actions.length - 1];
|
1735
1593
|
return drafts.filter(({ createdAt }) => createdAt >= lastAction.createdAt).filter(({ eventId }) => eventId === event2.id);
|
1736
1594
|
}
|
@@ -1742,8 +1600,8 @@ function createEmptyDraft(eventId, draftId, actionType) {
|
|
1742
1600
|
transactionId: getUUID(),
|
1743
1601
|
action: {
|
1744
1602
|
type: actionType,
|
1745
|
-
|
1746
|
-
|
1603
|
+
declaration: {},
|
1604
|
+
annotation: {},
|
1747
1605
|
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
1748
1606
|
createdBy: "@todo",
|
1749
1607
|
createdAtLocation: "@todo"
|
@@ -1751,22 +1609,94 @@ function createEmptyDraft(eventId, draftId, actionType) {
|
|
1751
1609
|
};
|
1752
1610
|
}
|
1753
1611
|
function isVerificationPage(page) {
|
1754
|
-
return page.type ===
|
1612
|
+
return page.type === PageTypes.enum.VERIFICATION;
|
1755
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
|
+
};
|
1756
1679
|
|
1757
1680
|
// ../commons/src/events/EventConfig.ts
|
1758
|
-
var
|
1759
|
-
|
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(
|
1760
1685
|
'A machine-readable identifier for the event, e.g. "birth" or "death"'
|
1761
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
|
+
),
|
1762
1692
|
summary: SummaryConfig,
|
1763
1693
|
label: TranslationConfig,
|
1764
|
-
actions:
|
1765
|
-
|
1766
|
-
deduplication:
|
1767
|
-
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([])
|
1768
1698
|
}).superRefine((event2, ctx) => {
|
1769
|
-
const allFields =
|
1699
|
+
const allFields = findAllFields(event2);
|
1770
1700
|
const fieldIds = allFields.map((field2) => field2.id);
|
1771
1701
|
const advancedSearchFields = event2.advancedSearch.flatMap(
|
1772
1702
|
(section) => section.fields.flatMap((field2) => field2.fieldId)
|
@@ -1780,287 +1710,497 @@ var EventConfig = import_zod18.z.object({
|
|
1780
1710
|
});
|
1781
1711
|
}
|
1782
1712
|
const invalidFields = event2.advancedSearch.flatMap(
|
1783
|
-
(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
|
+
)
|
1784
1720
|
);
|
1785
1721
|
if (invalidFields.length > 0) {
|
1786
1722
|
ctx.addIssue({
|
1787
1723
|
code: "custom",
|
1788
|
-
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.
|
1789
1725
|
Invalid AdvancedSearch field IDs for event ${event2.id}: ${invalidFields.map((f) => f.fieldId).join(", ")}`,
|
1790
1726
|
path: ["advancedSearch"]
|
1791
1727
|
});
|
1792
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"
|
1793
1750
|
});
|
1794
1751
|
|
1795
1752
|
// ../commons/src/events/EventConfigInput.ts
|
1796
|
-
var
|
1753
|
+
var defineDeclarationForm = (form) => DeclarationFormConfig.parse(form);
|
1754
|
+
var defineActionForm = (actionForm) => ActionFormConfig.parse(actionForm);
|
1755
|
+
var definePage = (page) => PageConfig.parse(page);
|
1797
1756
|
var defineFormPage = (formPage) => FormPageConfig.parse(formPage);
|
1798
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
|
+
}
|
1780
|
+
|
1799
1781
|
// ../commons/src/events/Draft.ts
|
1800
|
-
var
|
1782
|
+
var import_zod20 = require("zod");
|
1801
1783
|
|
1802
1784
|
// ../commons/src/events/ActionDocument.ts
|
1803
|
-
var
|
1804
|
-
var
|
1805
|
-
|
1806
|
-
|
1807
|
-
|
1808
|
-
|
1809
|
-
|
1810
|
-
|
1811
|
-
|
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()
|
1812
1811
|
});
|
1813
1812
|
var AssignedAction = ActionBase.merge(
|
1814
|
-
|
1815
|
-
type:
|
1816
|
-
assignedTo:
|
1813
|
+
import_zod18.z.object({
|
1814
|
+
type: import_zod18.z.literal(ActionType.ASSIGN),
|
1815
|
+
assignedTo: import_zod18.z.string()
|
1817
1816
|
})
|
1818
1817
|
);
|
1819
1818
|
var UnassignedAction = ActionBase.merge(
|
1820
|
-
|
1821
|
-
type:
|
1819
|
+
import_zod18.z.object({
|
1820
|
+
type: import_zod18.z.literal(ActionType.UNASSIGN),
|
1821
|
+
assignedTo: import_zod18.z.literal(null)
|
1822
1822
|
})
|
1823
1823
|
);
|
1824
1824
|
var RegisterAction = ActionBase.merge(
|
1825
|
-
|
1826
|
-
type:
|
1827
|
-
|
1828
|
-
trackingId: import_zod19.z.string(),
|
1829
|
-
registrationNumber: import_zod19.z.string()
|
1830
|
-
})
|
1825
|
+
import_zod18.z.object({
|
1826
|
+
type: import_zod18.z.literal(ActionType.REGISTER),
|
1827
|
+
registrationNumber: import_zod18.z.string().optional()
|
1831
1828
|
})
|
1832
1829
|
);
|
1833
1830
|
var DeclareAction = ActionBase.merge(
|
1834
|
-
|
1835
|
-
type:
|
1831
|
+
import_zod18.z.object({
|
1832
|
+
type: import_zod18.z.literal(ActionType.DECLARE)
|
1836
1833
|
})
|
1837
1834
|
);
|
1838
1835
|
var ValidateAction = ActionBase.merge(
|
1839
|
-
|
1840
|
-
type:
|
1836
|
+
import_zod18.z.object({
|
1837
|
+
type: import_zod18.z.literal(ActionType.VALIDATE)
|
1841
1838
|
})
|
1842
1839
|
);
|
1843
1840
|
var RejectAction = ActionBase.merge(
|
1844
|
-
|
1845
|
-
type:
|
1841
|
+
import_zod18.z.object({
|
1842
|
+
type: import_zod18.z.literal(ActionType.REJECT)
|
1846
1843
|
})
|
1847
1844
|
);
|
1848
1845
|
var MarkAsDuplicateAction = ActionBase.merge(
|
1849
|
-
|
1850
|
-
type:
|
1846
|
+
import_zod18.z.object({
|
1847
|
+
type: import_zod18.z.literal(ActionType.MARKED_AS_DUPLICATE)
|
1851
1848
|
})
|
1852
1849
|
);
|
1853
1850
|
var ArchiveAction = ActionBase.merge(
|
1854
|
-
|
1855
|
-
type:
|
1851
|
+
import_zod18.z.object({
|
1852
|
+
type: import_zod18.z.literal(ActionType.ARCHIVE)
|
1856
1853
|
})
|
1857
1854
|
);
|
1858
1855
|
var CreatedAction = ActionBase.merge(
|
1859
|
-
|
1860
|
-
type:
|
1856
|
+
import_zod18.z.object({
|
1857
|
+
type: import_zod18.z.literal(ActionType.CREATE)
|
1861
1858
|
})
|
1862
1859
|
);
|
1863
1860
|
var NotifiedAction = ActionBase.merge(
|
1864
|
-
|
1865
|
-
type:
|
1861
|
+
import_zod18.z.object({
|
1862
|
+
type: import_zod18.z.literal(ActionType.NOTIFY)
|
1866
1863
|
})
|
1867
1864
|
);
|
1868
1865
|
var PrintCertificateAction = ActionBase.merge(
|
1869
|
-
|
1870
|
-
type:
|
1866
|
+
import_zod18.z.object({
|
1867
|
+
type: import_zod18.z.literal(ActionType.PRINT_CERTIFICATE)
|
1871
1868
|
})
|
1872
1869
|
);
|
1873
1870
|
var RequestedCorrectionAction = ActionBase.merge(
|
1874
|
-
|
1875
|
-
type:
|
1871
|
+
import_zod18.z.object({
|
1872
|
+
type: import_zod18.z.literal(ActionType.REQUEST_CORRECTION)
|
1876
1873
|
})
|
1877
1874
|
);
|
1878
1875
|
var ApprovedCorrectionAction = ActionBase.merge(
|
1879
|
-
|
1880
|
-
type:
|
1881
|
-
requestId:
|
1876
|
+
import_zod18.z.object({
|
1877
|
+
type: import_zod18.z.literal(ActionType.APPROVE_CORRECTION),
|
1878
|
+
requestId: import_zod18.z.string()
|
1882
1879
|
})
|
1883
1880
|
);
|
1884
1881
|
var RejectedCorrectionAction = ActionBase.merge(
|
1885
|
-
|
1886
|
-
type:
|
1887
|
-
requestId:
|
1882
|
+
import_zod18.z.object({
|
1883
|
+
type: import_zod18.z.literal(ActionType.REJECT_CORRECTION),
|
1884
|
+
requestId: import_zod18.z.string()
|
1888
1885
|
})
|
1889
1886
|
);
|
1890
|
-
var
|
1891
|
-
|
1892
|
-
type:
|
1887
|
+
var ReadAction = ActionBase.merge(
|
1888
|
+
import_zod18.z.object({
|
1889
|
+
type: import_zod18.z.literal(ActionType.READ)
|
1893
1890
|
})
|
1894
1891
|
);
|
1895
|
-
var ActionDocument =
|
1896
|
-
CreatedAction,
|
1897
|
-
ValidateAction,
|
1898
|
-
RejectAction,
|
1899
|
-
MarkAsDuplicateAction,
|
1900
|
-
ArchiveAction,
|
1901
|
-
NotifiedAction,
|
1902
|
-
RegisterAction,
|
1903
|
-
DeclareAction,
|
1904
|
-
AssignedAction,
|
1905
|
-
RequestedCorrectionAction,
|
1906
|
-
ApprovedCorrectionAction,
|
1907
|
-
RejectedCorrectionAction,
|
1908
|
-
UnassignedAction,
|
1909
|
-
PrintCertificateAction,
|
1910
|
-
|
1911
|
-
])
|
1912
|
-
|
1913
|
-
|
1914
|
-
|
1915
|
-
|
1916
|
-
|
1917
|
-
|
1918
|
-
|
1919
|
-
|
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()
|
1920
1932
|
})
|
1921
1933
|
)
|
1922
1934
|
});
|
1923
1935
|
|
1924
1936
|
// ../commons/src/events/ActionInput.ts
|
1925
|
-
var
|
1926
|
-
var
|
1927
|
-
|
1928
|
-
|
1929
|
-
|
1930
|
-
|
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()
|
1931
1947
|
});
|
1932
1948
|
var CreateActionInput = BaseActionInput.merge(
|
1933
|
-
|
1934
|
-
type:
|
1935
|
-
createdAtLocation:
|
1949
|
+
import_zod19.z.object({
|
1950
|
+
type: import_zod19.z.literal(ActionType.CREATE).default(ActionType.CREATE),
|
1951
|
+
createdAtLocation: import_zod19.z.string()
|
1936
1952
|
})
|
1937
1953
|
);
|
1938
1954
|
var RegisterActionInput = BaseActionInput.merge(
|
1939
|
-
|
1940
|
-
type:
|
1941
|
-
|
1942
|
-
trackingId: import_zod20.z.string(),
|
1943
|
-
registrationNumber: import_zod20.z.string()
|
1944
|
-
})
|
1955
|
+
import_zod19.z.object({
|
1956
|
+
type: import_zod19.z.literal(ActionType.REGISTER).default(ActionType.REGISTER),
|
1957
|
+
registrationNumber: import_zod19.z.string().optional()
|
1945
1958
|
})
|
1946
1959
|
);
|
1947
1960
|
var ValidateActionInput = BaseActionInput.merge(
|
1948
|
-
|
1949
|
-
type:
|
1950
|
-
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())
|
1951
1964
|
})
|
1952
1965
|
);
|
1953
1966
|
var NotifyActionInput = BaseActionInput.merge(
|
1954
|
-
|
1955
|
-
type:
|
1967
|
+
import_zod19.z.object({
|
1968
|
+
type: import_zod19.z.literal(ActionType.NOTIFY).default(ActionType.NOTIFY)
|
1956
1969
|
})
|
1957
1970
|
);
|
1958
1971
|
var DeclareActionInput = BaseActionInput.merge(
|
1959
|
-
|
1960
|
-
type:
|
1972
|
+
import_zod19.z.object({
|
1973
|
+
type: import_zod19.z.literal(ActionType.DECLARE).default(ActionType.DECLARE)
|
1961
1974
|
})
|
1962
1975
|
);
|
1963
1976
|
var PrintCertificateActionInput = BaseActionInput.merge(
|
1964
|
-
|
1965
|
-
type:
|
1977
|
+
import_zod19.z.object({
|
1978
|
+
type: import_zod19.z.literal(ActionType.PRINT_CERTIFICATE).default(ActionType.PRINT_CERTIFICATE)
|
1966
1979
|
})
|
1967
1980
|
);
|
1968
1981
|
var RejectDeclarationActionInput = BaseActionInput.merge(
|
1969
|
-
|
1970
|
-
type:
|
1982
|
+
import_zod19.z.object({
|
1983
|
+
type: import_zod19.z.literal(ActionType.REJECT).default(ActionType.REJECT)
|
1971
1984
|
})
|
1972
1985
|
);
|
1973
1986
|
var MarkedAsDuplicateActionInput = BaseActionInput.merge(
|
1974
|
-
|
1975
|
-
type:
|
1987
|
+
import_zod19.z.object({
|
1988
|
+
type: import_zod19.z.literal(ActionType.MARKED_AS_DUPLICATE).default(ActionType.MARKED_AS_DUPLICATE)
|
1976
1989
|
})
|
1977
1990
|
);
|
1978
1991
|
var ArchiveActionInput = BaseActionInput.merge(
|
1979
|
-
|
1980
|
-
type:
|
1992
|
+
import_zod19.z.object({
|
1993
|
+
type: import_zod19.z.literal(ActionType.ARCHIVE).default(ActionType.ARCHIVE)
|
1981
1994
|
})
|
1982
1995
|
);
|
1983
1996
|
var AssignActionInput = BaseActionInput.merge(
|
1984
|
-
|
1985
|
-
type:
|
1986
|
-
assignedTo:
|
1997
|
+
import_zod19.z.object({
|
1998
|
+
type: import_zod19.z.literal(ActionType.ASSIGN).default(ActionType.ASSIGN),
|
1999
|
+
assignedTo: import_zod19.z.string()
|
1987
2000
|
})
|
1988
2001
|
);
|
1989
2002
|
var UnassignActionInput = BaseActionInput.merge(
|
1990
|
-
|
1991
|
-
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)
|
1992
2006
|
})
|
1993
2007
|
);
|
1994
2008
|
var RequestCorrectionActionInput = BaseActionInput.merge(
|
1995
|
-
|
1996
|
-
type:
|
2009
|
+
import_zod19.z.object({
|
2010
|
+
type: import_zod19.z.literal(ActionType.REQUEST_CORRECTION).default(ActionType.REQUEST_CORRECTION)
|
1997
2011
|
})
|
1998
2012
|
);
|
1999
2013
|
var RejectCorrectionActionInput = BaseActionInput.merge(
|
2000
|
-
|
2001
|
-
requestId:
|
2002
|
-
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)
|
2003
2017
|
})
|
2004
2018
|
);
|
2005
2019
|
var ApproveCorrectionActionInput = BaseActionInput.merge(
|
2006
|
-
|
2007
|
-
requestId:
|
2008
|
-
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)
|
2009
2023
|
})
|
2010
2024
|
);
|
2011
|
-
var
|
2012
|
-
|
2013
|
-
|
2014
|
-
|
2015
|
-
|
2016
|
-
|
2017
|
-
|
2018
|
-
|
2019
|
-
|
2020
|
-
|
2021
|
-
|
2022
|
-
|
2023
|
-
|
2024
|
-
|
2025
|
-
|
2026
|
-
|
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
|
+
});
|
2027
2058
|
|
2028
2059
|
// ../commons/src/events/Draft.ts
|
2029
|
-
var Draft =
|
2030
|
-
id:
|
2031
|
-
eventId:
|
2032
|
-
transactionId:
|
2033
|
-
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(),
|
2034
2065
|
action: ActionBase.extend({
|
2035
|
-
type:
|
2066
|
+
type: ActionTypes
|
2036
2067
|
}).omit({ id: true })
|
2037
2068
|
});
|
2038
2069
|
var DraftInput = BaseActionInput.extend({
|
2039
|
-
type:
|
2070
|
+
type: ActionTypes
|
2040
2071
|
});
|
2041
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()
|
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
|
+
};
|
2176
|
+
|
2042
2177
|
// ../commons/src/events/EventInput.ts
|
2043
2178
|
var import_zod22 = require("zod");
|
2044
2179
|
var EventInput = import_zod22.z.object({
|
2045
2180
|
transactionId: import_zod22.z.string(),
|
2046
|
-
type: import_zod22.z.string()
|
2181
|
+
type: import_zod22.z.string(),
|
2182
|
+
dateOfEvent: import_zod22.z.object({ fieldId: import_zod22.z.string() }).optional()
|
2047
2183
|
});
|
2048
2184
|
|
2049
2185
|
// ../commons/src/events/EventDocument.ts
|
2050
2186
|
var import_zod23 = require("zod");
|
2187
|
+
var import_zod_openapi6 = require("zod-openapi");
|
2188
|
+
(0, import_zod_openapi6.extendZodWithOpenApi)(import_zod23.z);
|
2051
2189
|
var EventDocument = import_zod23.z.object({
|
2052
2190
|
id: import_zod23.z.string(),
|
2053
2191
|
type: import_zod23.z.string(),
|
2192
|
+
dateOfEvent: import_zod23.z.object({ fieldId: import_zod23.z.string() }).optional(),
|
2054
2193
|
createdAt: import_zod23.z.string().datetime(),
|
2055
2194
|
updatedAt: import_zod23.z.string().datetime(),
|
2056
|
-
|
2195
|
+
updatedAtLocation: import_zod23.z.string(),
|
2196
|
+
actions: import_zod23.z.array(Action),
|
2057
2197
|
trackingId: import_zod23.z.string()
|
2058
|
-
});
|
2198
|
+
}).openapi({ ref: "EventDocument" });
|
2059
2199
|
|
2060
2200
|
// ../commons/src/events/EventIndex.ts
|
2061
2201
|
var import_zod24 = require("zod");
|
2062
2202
|
var EventIndex = EventMetadata.extend({
|
2063
|
-
|
2203
|
+
declaration: import_zod24.z.record(import_zod24.z.string(), import_zod24.z.any())
|
2064
2204
|
});
|
2065
2205
|
var EventSearchIndex = import_zod24.z.record(import_zod24.z.string(), import_zod24.z.any()).and(
|
2066
2206
|
import_zod24.z.object({
|
@@ -2068,35 +2208,94 @@ var EventSearchIndex = import_zod24.z.record(import_zod24.z.string(), import_zod
|
|
2068
2208
|
// Ensures "type" (event-id) exists and is a string
|
2069
2209
|
})
|
2070
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]);
|
2071
2248
|
|
2072
2249
|
// ../commons/src/events/state/index.ts
|
2073
|
-
var _ = __toESM(require("lodash"));
|
2074
2250
|
function getStatusFromActions(actions) {
|
2251
|
+
const hasRejectedAction = actions.some(
|
2252
|
+
(a) => a.status === ActionStatus.Rejected
|
2253
|
+
);
|
2254
|
+
if (hasRejectedAction) {
|
2255
|
+
return EventStatus.REJECTED;
|
2256
|
+
}
|
2075
2257
|
return actions.reduce((status, action) => {
|
2076
|
-
|
2077
|
-
|
2078
|
-
|
2079
|
-
|
2080
|
-
|
2081
|
-
|
2082
|
-
|
2083
|
-
|
2084
|
-
|
2085
|
-
|
2086
|
-
|
2087
|
-
|
2088
|
-
|
2089
|
-
|
2090
|
-
|
2091
|
-
|
2092
|
-
|
2093
|
-
|
2094
|
-
|
2095
|
-
|
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;
|
2096
2284
|
}
|
2097
|
-
return status;
|
2098
2285
|
}, EventStatus.CREATED);
|
2099
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
|
+
}
|
2100
2299
|
function getAssignedUserFromActions(actions) {
|
2101
2300
|
return actions.reduce((user2, action) => {
|
2102
2301
|
if (action.type === ActionType.ASSIGN) {
|
@@ -2108,7 +2307,7 @@ function getAssignedUserFromActions(actions) {
|
|
2108
2307
|
return user2;
|
2109
2308
|
}, null);
|
2110
2309
|
}
|
2111
|
-
function
|
2310
|
+
function aggregateActionDeclarations(actions) {
|
2112
2311
|
const excludedActions = [
|
2113
2312
|
ActionType.REQUEST_CORRECTION,
|
2114
2313
|
ActionType.PRINT_CERTIFICATE
|
@@ -2122,47 +2321,35 @@ function getData(actions) {
|
|
2122
2321
|
if (!requestAction) {
|
2123
2322
|
return status;
|
2124
2323
|
}
|
2125
|
-
return deepMerge(status, requestAction.
|
2324
|
+
return deepMerge(status, requestAction.declaration);
|
2126
2325
|
}
|
2127
|
-
return deepMerge(status, action.
|
2326
|
+
return deepMerge(status, action.declaration);
|
2128
2327
|
}, {});
|
2129
2328
|
}
|
2130
2329
|
function deepDropNulls(obj) {
|
2131
|
-
if (
|
2132
|
-
|
2133
|
-
|
2134
|
-
|
2135
|
-
|
2136
|
-
|
2137
|
-
|
2138
|
-
|
2139
|
-
[key]
|
2140
|
-
};
|
2141
|
-
}
|
2142
|
-
return acc;
|
2143
|
-
}, {});
|
2144
|
-
}
|
2145
|
-
function deepMerge(currentDocument, actionDocument) {
|
2146
|
-
return _.mergeWith(
|
2147
|
-
currentDocument,
|
2148
|
-
actionDocument,
|
2149
|
-
(previousValue, incomingValue) => {
|
2150
|
-
if (incomingValue === void 0) {
|
2151
|
-
return previousValue;
|
2152
|
-
}
|
2153
|
-
if (_.isArray(incomingValue)) {
|
2154
|
-
return incomingValue;
|
2155
|
-
}
|
2156
|
-
if (_.isObject(previousValue) && _.isObject(incomingValue)) {
|
2157
|
-
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;
|
2158
2339
|
}
|
2159
|
-
return
|
2160
|
-
}
|
2161
|
-
|
2340
|
+
return acc;
|
2341
|
+
}, {});
|
2342
|
+
}
|
2343
|
+
return obj;
|
2162
2344
|
}
|
2163
2345
|
function isUndeclaredDraft(status) {
|
2164
2346
|
return status === EventStatus.CREATED;
|
2165
2347
|
}
|
2348
|
+
function getAcceptedActions(event2) {
|
2349
|
+
return event2.actions.filter(
|
2350
|
+
(a) => a.status === ActionStatus.Accepted
|
2351
|
+
);
|
2352
|
+
}
|
2166
2353
|
function getCurrentEventState(event2) {
|
2167
2354
|
const creationAction = event2.actions.find(
|
2168
2355
|
(action) => action.type === ActionType.CREATE
|
@@ -2170,19 +2357,35 @@ function getCurrentEventState(event2) {
|
|
2170
2357
|
if (!creationAction) {
|
2171
2358
|
throw new Error(`Event ${event2.id} has no creation action`);
|
2172
2359
|
}
|
2173
|
-
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
|
+
}
|
2174
2372
|
return deepDropNulls({
|
2175
2373
|
id: event2.id,
|
2176
2374
|
type: event2.type,
|
2177
2375
|
status: getStatusFromActions(event2.actions),
|
2178
2376
|
createdAt: event2.createdAt,
|
2179
2377
|
createdBy: creationAction.createdBy,
|
2180
|
-
createdAtLocation: creationAction.createdAtLocation,
|
2181
|
-
|
2182
|
-
|
2378
|
+
createdAtLocation: creationAction.createdAtLocation ?? "",
|
2379
|
+
// @todo remove using empty string
|
2380
|
+
updatedAt: latestAction.createdAt,
|
2381
|
+
assignedTo: getAssignedUserFromActions(activeActions),
|
2183
2382
|
updatedBy: latestAction.createdBy,
|
2184
|
-
|
2185
|
-
|
2383
|
+
updatedAtLocation: event2.updatedAtLocation,
|
2384
|
+
declaration,
|
2385
|
+
trackingId: event2.trackingId,
|
2386
|
+
registrationNumber,
|
2387
|
+
updatedByUserRole: getLastUpdatedByUserRoleFromActions(event2.actions),
|
2388
|
+
dateOfEvent
|
2186
2389
|
});
|
2187
2390
|
}
|
2188
2391
|
function getCurrentEventStateWithDrafts(event2, drafts) {
|
@@ -2207,45 +2410,50 @@ function getCurrentEventStateWithDrafts(event2, drafts) {
|
|
2207
2410
|
return getCurrentEventState(withDrafts);
|
2208
2411
|
}
|
2209
2412
|
function applyDraftsToEventIndex(eventIndex, drafts) {
|
2210
|
-
const indexedAt = eventIndex.
|
2413
|
+
const indexedAt = eventIndex.updatedAt;
|
2211
2414
|
const activeDrafts = drafts.filter(({ createdAt }) => new Date(createdAt) > new Date(indexedAt)).map((draft) => draft.action).sort();
|
2212
2415
|
if (activeDrafts.length === 0) {
|
2213
2416
|
return eventIndex;
|
2214
2417
|
}
|
2215
2418
|
return {
|
2216
2419
|
...eventIndex,
|
2217
|
-
|
2218
|
-
...eventIndex.
|
2219
|
-
...activeDrafts[activeDrafts.length - 1].
|
2420
|
+
declaration: {
|
2421
|
+
...eventIndex.declaration,
|
2422
|
+
...activeDrafts[activeDrafts.length - 1].declaration
|
2220
2423
|
}
|
2221
2424
|
};
|
2222
2425
|
}
|
2223
|
-
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({
|
2224
2434
|
event: event2,
|
2225
2435
|
actionType,
|
2226
|
-
drafts
|
2436
|
+
drafts = []
|
2227
2437
|
}) {
|
2228
|
-
const
|
2438
|
+
const activeActions = getAcceptedActions(event2);
|
2439
|
+
const action = activeActions.find(
|
2440
|
+
(activeAction) => actionType === activeAction.type
|
2441
|
+
);
|
2229
2442
|
const eventDrafts = drafts.filter((draft) => draft.eventId === event2.id);
|
2230
2443
|
const sorted = [
|
2231
2444
|
...action ? [action] : [],
|
2232
2445
|
...eventDrafts.map((draft) => draft.action)
|
2233
2446
|
].sort();
|
2234
|
-
const
|
2235
|
-
return deepMerge(
|
2447
|
+
const annotation = sorted.reduce((ann, sortedAction) => {
|
2448
|
+
return deepMerge(ann, sortedAction.annotation ?? {});
|
2236
2449
|
}, {});
|
2237
|
-
return deepDropNulls(
|
2450
|
+
return deepDropNulls(annotation);
|
2238
2451
|
}
|
2239
2452
|
|
2240
2453
|
// ../commons/src/events/defineConfig.ts
|
2241
2454
|
var defineConfig = (config) => {
|
2242
|
-
validateWorkqueueConfig(config.workqueues);
|
2243
2455
|
const input = EventConfig.parse(config);
|
2244
|
-
|
2245
|
-
return EventConfig.parse({
|
2246
|
-
...input,
|
2247
|
-
pageFields
|
2248
|
-
});
|
2456
|
+
return input;
|
2249
2457
|
};
|
2250
2458
|
|
2251
2459
|
// ../commons/src/events/transactions.ts
|
@@ -2260,6 +2468,16 @@ var import_lodash2 = require("lodash");
|
|
2260
2468
|
function defineConditional(schema) {
|
2261
2469
|
return schema;
|
2262
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
|
+
}
|
2263
2481
|
function alwaysTrue() {
|
2264
2482
|
return {};
|
2265
2483
|
}
|
@@ -2284,6 +2502,9 @@ function not(condition) {
|
|
2284
2502
|
required: []
|
2285
2503
|
});
|
2286
2504
|
}
|
2505
|
+
function never() {
|
2506
|
+
return not(alwaysTrue());
|
2507
|
+
}
|
2287
2508
|
var user = {
|
2288
2509
|
hasScope: (scope) => defineConditional({
|
2289
2510
|
type: "object",
|
@@ -2305,95 +2526,148 @@ var user = {
|
|
2305
2526
|
required: ["$user"]
|
2306
2527
|
})
|
2307
2528
|
};
|
2308
|
-
|
2309
|
-
|
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 {
|
2310
2566
|
type: "object",
|
2311
2567
|
properties: {
|
2312
|
-
|
2313
|
-
type: "
|
2314
|
-
|
2315
|
-
|
2316
|
-
|
2317
|
-
|
2318
|
-
type: "object",
|
2319
|
-
properties: {
|
2320
|
-
type: {
|
2321
|
-
const: action
|
2322
|
-
}
|
2323
|
-
},
|
2324
|
-
required: ["type"]
|
2325
|
-
}
|
2326
|
-
}
|
2327
|
-
},
|
2328
|
-
required: ["actions"]
|
2329
|
-
}
|
2568
|
+
[fieldId]: {
|
2569
|
+
type: "string",
|
2570
|
+
format: "date",
|
2571
|
+
[clause]: { $data: `1/${comparedFieldId}` }
|
2572
|
+
},
|
2573
|
+
[comparedFieldId]: { type: "string", format: "date" }
|
2330
2574
|
},
|
2331
|
-
required: [
|
2332
|
-
}
|
2333
|
-
}
|
2334
|
-
function
|
2335
|
-
|
2575
|
+
required: [fieldId]
|
2576
|
+
};
|
2577
|
+
}
|
2578
|
+
function isFieldReference(value) {
|
2579
|
+
return typeof value === "object" && value !== null && "_fieldId" in value;
|
2580
|
+
}
|
2581
|
+
function createFieldConditionals(fieldId) {
|
2336
2582
|
const getDateRange = (date, clause) => ({
|
2337
2583
|
type: "object",
|
2338
2584
|
properties: {
|
2339
|
-
|
2340
|
-
type: "
|
2341
|
-
|
2342
|
-
|
2343
|
-
type: "string",
|
2344
|
-
format: "date",
|
2345
|
-
[clause]: date
|
2346
|
-
}
|
2347
|
-
},
|
2348
|
-
required: [fieldId]
|
2585
|
+
[fieldId]: {
|
2586
|
+
type: "string",
|
2587
|
+
format: "date",
|
2588
|
+
[clause]: date
|
2349
2589
|
}
|
2350
2590
|
},
|
2351
|
-
required: [
|
2591
|
+
required: [fieldId]
|
2352
2592
|
});
|
2353
2593
|
return {
|
2354
2594
|
isAfter: () => ({
|
2355
2595
|
days: (days) => ({
|
2356
|
-
inPast: () =>
|
2596
|
+
inPast: () => defineFormConditional(
|
2357
2597
|
getDateRange(getDateFromNow(days), "formatMinimum")
|
2358
2598
|
),
|
2359
|
-
inFuture: () =>
|
2599
|
+
inFuture: () => defineFormConditional(
|
2360
2600
|
getDateRange(getDateFromNow(-days), "formatMinimum")
|
2361
2601
|
)
|
2362
2602
|
}),
|
2363
|
-
date: (date) =>
|
2364
|
-
|
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"))
|
2365
2617
|
}),
|
2366
2618
|
isBefore: () => ({
|
2367
2619
|
days: (days) => ({
|
2368
|
-
inPast: () =>
|
2620
|
+
inPast: () => defineFormConditional(
|
2369
2621
|
getDateRange(getDateFromNow(days), "formatMaximum")
|
2370
2622
|
),
|
2371
|
-
inFuture: () =>
|
2623
|
+
inFuture: () => defineFormConditional(
|
2372
2624
|
getDateRange(getDateFromNow(-days), "formatMaximum")
|
2373
2625
|
)
|
2374
2626
|
}),
|
2375
|
-
date: (date) =>
|
2376
|
-
|
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"))
|
2377
2641
|
}),
|
2378
|
-
isEqualTo: (value) =>
|
2379
|
-
|
2380
|
-
|
2381
|
-
|
2642
|
+
isEqualTo: (value) => {
|
2643
|
+
if (isFieldReference(value)) {
|
2644
|
+
const comparedFieldId = value._fieldId;
|
2645
|
+
return defineFormConditional({
|
2382
2646
|
type: "object",
|
2383
2647
|
properties: {
|
2384
2648
|
[fieldId]: {
|
2385
|
-
|
2386
|
-
|
2387
|
-
|
2388
|
-
|
2389
|
-
const: value
|
2390
|
-
}
|
2649
|
+
type: ["string", "boolean"],
|
2650
|
+
const: { $data: `1/${comparedFieldId}` }
|
2651
|
+
},
|
2652
|
+
[comparedFieldId]: { type: ["string", "boolean"] }
|
2391
2653
|
},
|
2392
|
-
required: [fieldId]
|
2393
|
-
}
|
2394
|
-
}
|
2395
|
-
|
2396
|
-
|
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
|
+
},
|
2397
2671
|
/**
|
2398
2672
|
* Use case: Some fields are rendered when selection is not made, or boolean false is explicitly selected.
|
2399
2673
|
* @example field('recommender.none').isFalsy() vs not(field('recommender.none').isEqualTo(true))
|
@@ -2402,108 +2676,166 @@ function field(fieldId) {
|
|
2402
2676
|
* NOTE: For now, this only works with string, boolean, and null types. 0 is still allowed.
|
2403
2677
|
*
|
2404
2678
|
*/
|
2405
|
-
isFalsy: () =>
|
2679
|
+
isFalsy: () => defineFormConditional({
|
2406
2680
|
type: "object",
|
2407
2681
|
properties: {
|
2408
|
-
|
2409
|
-
type: "object",
|
2410
|
-
properties: {
|
2411
|
-
[fieldId]: {
|
2412
|
-
anyOf: [
|
2413
|
-
{ const: "undefined" },
|
2414
|
-
{ const: false },
|
2415
|
-
{ const: null },
|
2416
|
-
{ const: "" }
|
2417
|
-
]
|
2418
|
-
}
|
2419
|
-
},
|
2682
|
+
[fieldId]: {
|
2420
2683
|
anyOf: [
|
2421
|
-
{
|
2422
|
-
|
2423
|
-
},
|
2424
|
-
{
|
2425
|
-
not: {
|
2426
|
-
required: [fieldId]
|
2427
|
-
}
|
2428
|
-
}
|
2684
|
+
{ const: "undefined" },
|
2685
|
+
{ const: false },
|
2686
|
+
{ const: null },
|
2687
|
+
{ const: "" }
|
2429
2688
|
]
|
2430
2689
|
}
|
2431
2690
|
},
|
2432
|
-
|
2433
|
-
|
2434
|
-
|
2435
|
-
|
2436
|
-
|
2437
|
-
$form: {
|
2438
|
-
type: "object",
|
2439
|
-
properties: {
|
2440
|
-
[fieldId]: {
|
2441
|
-
type: "string",
|
2442
|
-
enum: ["undefined"]
|
2443
|
-
}
|
2444
|
-
},
|
2691
|
+
anyOf: [
|
2692
|
+
{
|
2693
|
+
required: [fieldId]
|
2694
|
+
},
|
2695
|
+
{
|
2445
2696
|
not: {
|
2446
2697
|
required: [fieldId]
|
2447
2698
|
}
|
2448
2699
|
}
|
2700
|
+
]
|
2701
|
+
}),
|
2702
|
+
isUndefined: () => defineFormConditional({
|
2703
|
+
type: "object",
|
2704
|
+
properties: {
|
2705
|
+
[fieldId]: {
|
2706
|
+
type: "string",
|
2707
|
+
enum: ["undefined"]
|
2708
|
+
}
|
2449
2709
|
},
|
2450
|
-
|
2710
|
+
not: {
|
2711
|
+
required: [fieldId]
|
2712
|
+
}
|
2451
2713
|
}),
|
2452
|
-
inArray: (values) =>
|
2714
|
+
inArray: (values) => defineFormConditional({
|
2453
2715
|
type: "object",
|
2454
2716
|
properties: {
|
2455
|
-
|
2456
|
-
type: "
|
2457
|
-
|
2458
|
-
[fieldId]: {
|
2459
|
-
type: "string",
|
2460
|
-
enum: values
|
2461
|
-
}
|
2462
|
-
},
|
2463
|
-
required: [fieldId]
|
2717
|
+
[fieldId]: {
|
2718
|
+
type: "string",
|
2719
|
+
enum: values
|
2464
2720
|
}
|
2465
2721
|
},
|
2466
|
-
required: [
|
2722
|
+
required: [fieldId]
|
2467
2723
|
}),
|
2468
|
-
isValidEnglishName: () =>
|
2724
|
+
isValidEnglishName: () => defineFormConditional({
|
2469
2725
|
type: "object",
|
2470
2726
|
properties: {
|
2471
|
-
|
2472
|
-
type: "
|
2473
|
-
|
2474
|
-
|
2475
|
-
|
2476
|
-
|
2477
|
-
|
2478
|
-
|
2479
|
-
|
2480
|
-
|
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
|
2746
|
+
}
|
2747
|
+
},
|
2748
|
+
required: [fieldId]
|
2749
|
+
}),
|
2750
|
+
isBetween: (min, max) => defineFormConditional({
|
2751
|
+
type: "object",
|
2752
|
+
properties: {
|
2753
|
+
[fieldId]: {
|
2754
|
+
type: "number",
|
2755
|
+
minimum: min,
|
2756
|
+
maximum: max
|
2481
2757
|
}
|
2482
2758
|
},
|
2483
|
-
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" }
|
2484
2812
|
})
|
2485
2813
|
};
|
2486
2814
|
}
|
2487
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
|
+
|
2488
2828
|
// ../commons/src/fixtures/tennis-club-membership-event.ts
|
2489
|
-
var PRINT_CERTIFICATE_FORM =
|
2829
|
+
var PRINT_CERTIFICATE_FORM = defineActionForm({
|
2490
2830
|
label: {
|
2491
2831
|
id: "v2.event.tennis-club-membership.action.certificate.form.label",
|
2492
2832
|
defaultMessage: "Tennis club membership certificate collector",
|
2493
2833
|
description: "This is what this form is referred as in the system"
|
2494
2834
|
},
|
2495
|
-
version: {
|
2496
|
-
id: "1.0.0",
|
2497
|
-
label: {
|
2498
|
-
id: "v2.event.tennis-club-membership.action.certificate.form.version.1",
|
2499
|
-
defaultMessage: "Version 1",
|
2500
|
-
description: "This is the first version of the form"
|
2501
|
-
}
|
2502
|
-
},
|
2503
|
-
active: true,
|
2504
2835
|
pages: [
|
2505
2836
|
{
|
2506
2837
|
id: "collector",
|
2838
|
+
type: PageTypes.enum.FORM,
|
2507
2839
|
title: {
|
2508
2840
|
id: "v2.event.tennis-club-membership.action.certificate.form.section.who.title",
|
2509
2841
|
defaultMessage: "Print certified copy",
|
@@ -2518,7 +2850,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2518
2850
|
defaultMessage: "Requester",
|
2519
2851
|
description: "This is the label for the field"
|
2520
2852
|
},
|
2521
|
-
type:
|
2853
|
+
type: FieldType.SELECT,
|
2522
2854
|
options: [
|
2523
2855
|
{
|
2524
2856
|
value: "INFORMANT",
|
@@ -2595,7 +2927,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2595
2927
|
defaultMessage: "Select Type of ID",
|
2596
2928
|
description: "This is the label for selecting the type of ID"
|
2597
2929
|
},
|
2598
|
-
type:
|
2930
|
+
type: FieldType.SELECT,
|
2599
2931
|
options: [
|
2600
2932
|
{
|
2601
2933
|
value: "PASSPORT",
|
@@ -2696,7 +3028,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2696
3028
|
defaultMessage: "Passport Details",
|
2697
3029
|
description: "Field for entering Passport details"
|
2698
3030
|
},
|
2699
|
-
type:
|
3031
|
+
type: FieldType.TEXT
|
2700
3032
|
},
|
2701
3033
|
{
|
2702
3034
|
id: "collector.DRIVING_LICENSE.details",
|
@@ -2747,7 +3079,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2747
3079
|
defaultMessage: "Driving License Details",
|
2748
3080
|
description: "Field for entering Driving License details"
|
2749
3081
|
},
|
2750
|
-
type:
|
3082
|
+
type: FieldType.TEXT
|
2751
3083
|
},
|
2752
3084
|
{
|
2753
3085
|
id: "collector.REFUGEE_NUMBER.details",
|
@@ -2798,7 +3130,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2798
3130
|
defaultMessage: "Refugee Number Details",
|
2799
3131
|
description: "Field for entering Refugee Number details"
|
2800
3132
|
},
|
2801
|
-
type:
|
3133
|
+
type: FieldType.TEXT
|
2802
3134
|
},
|
2803
3135
|
{
|
2804
3136
|
id: "collector.ALIEN_NUMBER.details",
|
@@ -2849,7 +3181,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2849
3181
|
defaultMessage: "Alien Number Details",
|
2850
3182
|
description: "Field for entering Alien Number details"
|
2851
3183
|
},
|
2852
|
-
type:
|
3184
|
+
type: FieldType.TEXT
|
2853
3185
|
},
|
2854
3186
|
{
|
2855
3187
|
id: "collector.OTHER.idTypeOther",
|
@@ -2900,7 +3232,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2900
3232
|
defaultMessage: "Other ID Type (if applicable)",
|
2901
3233
|
description: 'Field for entering ID type if "Other" is selected'
|
2902
3234
|
},
|
2903
|
-
type:
|
3235
|
+
type: FieldType.TEXT
|
2904
3236
|
},
|
2905
3237
|
{
|
2906
3238
|
id: "collector.OTHER.firstName",
|
@@ -2951,7 +3283,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
2951
3283
|
defaultMessage: "First Name",
|
2952
3284
|
description: "This is the label for the first name field"
|
2953
3285
|
},
|
2954
|
-
type:
|
3286
|
+
type: FieldType.TEXT
|
2955
3287
|
},
|
2956
3288
|
{
|
2957
3289
|
id: "collector.OTHER.lastName",
|
@@ -3002,7 +3334,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
3002
3334
|
defaultMessage: "Last Name",
|
3003
3335
|
description: "This is the label for the last name field"
|
3004
3336
|
},
|
3005
|
-
type:
|
3337
|
+
type: FieldType.TEXT
|
3006
3338
|
},
|
3007
3339
|
{
|
3008
3340
|
id: "collector.OTHER.relationshipToMember",
|
@@ -3053,7 +3385,7 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
3053
3385
|
defaultMessage: "Relationship to Member",
|
3054
3386
|
description: "This is the label for the relationship to member field"
|
3055
3387
|
},
|
3056
|
-
type:
|
3388
|
+
type: FieldType.TEXT
|
3057
3389
|
},
|
3058
3390
|
{
|
3059
3391
|
id: "collector.OTHER.signedAffidavit",
|
@@ -3104,13 +3436,13 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
3104
3436
|
defaultMessage: "Signed Affidavit (Optional)",
|
3105
3437
|
description: "This is the label for uploading a signed affidavit"
|
3106
3438
|
},
|
3107
|
-
type:
|
3439
|
+
type: FieldType.FILE
|
3108
3440
|
}
|
3109
3441
|
]
|
3110
3442
|
},
|
3111
3443
|
{
|
3112
3444
|
id: "collector.identity.verify",
|
3113
|
-
type:
|
3445
|
+
type: PageTypes.enum.VERIFICATION,
|
3114
3446
|
conditional: field("collector.requesterId").isEqualTo("INFORMANT"),
|
3115
3447
|
title: {
|
3116
3448
|
id: "event.tennis-club-membership.action.print.verifyIdentity",
|
@@ -3147,62 +3479,45 @@ var PRINT_CERTIFICATE_FORM = defineForm({
|
|
3147
3479
|
}
|
3148
3480
|
}
|
3149
3481
|
}
|
3150
|
-
]
|
3151
|
-
review: {
|
3152
|
-
title: {
|
3153
|
-
id: "v2.event.tennis-club-membership.action.certificate.form.review.title",
|
3154
|
-
defaultMessage: "Member certificate collector for {firstname} {surname}",
|
3155
|
-
description: "Title of the form to show in review page"
|
3156
|
-
},
|
3157
|
-
fields: []
|
3158
|
-
}
|
3482
|
+
]
|
3159
3483
|
});
|
3160
|
-
var
|
3161
|
-
|
3162
|
-
id: "v2.event.tennis-club-membership.action.declare.form.
|
3163
|
-
defaultMessage: "
|
3164
|
-
description: "
|
3165
|
-
},
|
3166
|
-
active: true,
|
3167
|
-
version: {
|
3168
|
-
id: "1.0.0",
|
3169
|
-
label: {
|
3170
|
-
id: "v2.event.tennis-club-membership.action.declare.form.version.1",
|
3171
|
-
defaultMessage: "Version 1",
|
3172
|
-
description: "This is the first version of the form"
|
3173
|
-
}
|
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"
|
3174
3489
|
},
|
3175
|
-
|
3176
|
-
|
3177
|
-
id: "
|
3178
|
-
|
3179
|
-
|
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
|
+
}
|
3180
3499
|
},
|
3181
|
-
|
3182
|
-
|
3183
|
-
|
3184
|
-
|
3185
|
-
|
3186
|
-
|
3187
|
-
|
3188
|
-
description: "Label for the comment field in the review section"
|
3189
|
-
}
|
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"
|
3190
3507
|
},
|
3191
|
-
{
|
3192
|
-
|
3193
|
-
|
3194
|
-
|
3195
|
-
defaultMessage: "Signature of informant",
|
3196
|
-
id: "v2.event.birth.action.declare.form.review.signature.label",
|
3197
|
-
description: "Label for the signature field in the review section"
|
3198
|
-
},
|
3199
|
-
signaturePromptLabel: {
|
3200
|
-
id: "v2.signature.upload.modal.title",
|
3201
|
-
defaultMessage: "Draw signature",
|
3202
|
-
description: "Title for the modal to draw signature"
|
3203
|
-
}
|
3508
|
+
signaturePromptLabel: {
|
3509
|
+
id: "v2.signature.upload.modal.title",
|
3510
|
+
defaultMessage: "Draw signature",
|
3511
|
+
description: "Title for the modal to draw signature"
|
3204
3512
|
}
|
3205
|
-
|
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"
|
3206
3521
|
},
|
3207
3522
|
pages: [
|
3208
3523
|
{
|
@@ -3215,7 +3530,7 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
3215
3530
|
fields: [
|
3216
3531
|
{
|
3217
3532
|
id: "applicant.firstname",
|
3218
|
-
type:
|
3533
|
+
type: FieldType.TEXT,
|
3219
3534
|
required: true,
|
3220
3535
|
conditionals: [],
|
3221
3536
|
label: {
|
@@ -3226,7 +3541,7 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
3226
3541
|
},
|
3227
3542
|
{
|
3228
3543
|
id: "applicant.surname",
|
3229
|
-
type:
|
3544
|
+
type: FieldType.TEXT,
|
3230
3545
|
required: true,
|
3231
3546
|
conditionals: [],
|
3232
3547
|
label: {
|
@@ -3248,9 +3563,8 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
3248
3563
|
},
|
3249
3564
|
{
|
3250
3565
|
id: "applicant.dob",
|
3251
|
-
type:
|
3566
|
+
type: FieldType.DATE,
|
3252
3567
|
required: true,
|
3253
|
-
conditionals: [],
|
3254
3568
|
validation: [
|
3255
3569
|
{
|
3256
3570
|
message: {
|
@@ -3261,15 +3575,53 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
3261
3575
|
validator: field("applicant.dob").isBefore().now()
|
3262
3576
|
}
|
3263
3577
|
],
|
3578
|
+
conditionals: [
|
3579
|
+
{
|
3580
|
+
type: ConditionalType.SHOW,
|
3581
|
+
conditional: field("applicant.dobUnknown").isFalsy()
|
3582
|
+
}
|
3583
|
+
],
|
3264
3584
|
label: {
|
3265
3585
|
defaultMessage: "Applicant's date of birth",
|
3266
3586
|
description: "This is the label for the field",
|
3267
3587
|
id: "v2.event.tennis-club-membership.action.declare.form.section.who.field.dob.label"
|
3268
3588
|
}
|
3269
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
|
+
},
|
3270
3622
|
{
|
3271
3623
|
id: "applicant.image",
|
3272
|
-
type:
|
3624
|
+
type: FieldType.FILE,
|
3273
3625
|
required: false,
|
3274
3626
|
label: {
|
3275
3627
|
defaultMessage: "Applicant's profile picture",
|
@@ -3301,7 +3653,7 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
3301
3653
|
fields: [
|
3302
3654
|
{
|
3303
3655
|
id: "senior-pass.id",
|
3304
|
-
type:
|
3656
|
+
type: FieldType.TEXT,
|
3305
3657
|
required: true,
|
3306
3658
|
label: {
|
3307
3659
|
defaultMessage: "Senior pass ID",
|
@@ -3332,7 +3684,7 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
3332
3684
|
},
|
3333
3685
|
{
|
3334
3686
|
id: "recommender.firstname",
|
3335
|
-
type:
|
3687
|
+
type: FieldType.TEXT,
|
3336
3688
|
required: true,
|
3337
3689
|
conditionals: [
|
3338
3690
|
{
|
@@ -3348,7 +3700,7 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
3348
3700
|
},
|
3349
3701
|
{
|
3350
3702
|
id: "recommender.surname",
|
3351
|
-
type:
|
3703
|
+
type: FieldType.TEXT,
|
3352
3704
|
required: true,
|
3353
3705
|
conditionals: [
|
3354
3706
|
{
|
@@ -3364,7 +3716,7 @@ var TENNIS_CLUB_FORM = defineForm({
|
|
3364
3716
|
},
|
3365
3717
|
{
|
3366
3718
|
id: "recommender.id",
|
3367
|
-
type:
|
3719
|
+
type: FieldType.TEXT,
|
3368
3720
|
required: true,
|
3369
3721
|
conditionals: [
|
3370
3722
|
{
|
@@ -3389,20 +3741,12 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3389
3741
|
description: "This is what this event is referred as in the system",
|
3390
3742
|
id: "event.tennis-club-membership.label"
|
3391
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
|
+
},
|
3392
3749
|
summary: {
|
3393
|
-
title: {
|
3394
|
-
id: "event.tennis-club-membership.summary.title",
|
3395
|
-
label: {
|
3396
|
-
defaultMessage: "{applicant.firstname} {applicant.surname}",
|
3397
|
-
description: "This is the title of the summary",
|
3398
|
-
id: "v2.event.tennis-club-membership.summary.title"
|
3399
|
-
},
|
3400
|
-
emptyValueMessage: {
|
3401
|
-
defaultMessage: "Membership application",
|
3402
|
-
description: "This is the message shown when the applicant name is missing",
|
3403
|
-
id: "event.tennis-club-membership.summary.title.empty"
|
3404
|
-
}
|
3405
|
-
},
|
3406
3750
|
fields: [
|
3407
3751
|
{
|
3408
3752
|
id: "applicant.firstname",
|
@@ -3442,28 +3786,6 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3442
3786
|
}
|
3443
3787
|
]
|
3444
3788
|
},
|
3445
|
-
workqueues: [
|
3446
|
-
{
|
3447
|
-
id: "all",
|
3448
|
-
filters: []
|
3449
|
-
},
|
3450
|
-
{
|
3451
|
-
id: "ready-for-review",
|
3452
|
-
filters: [
|
3453
|
-
{
|
3454
|
-
status: ["DECLARED"]
|
3455
|
-
}
|
3456
|
-
]
|
3457
|
-
},
|
3458
|
-
{
|
3459
|
-
id: "registered",
|
3460
|
-
filters: [
|
3461
|
-
{
|
3462
|
-
status: ["REGISTERED"]
|
3463
|
-
}
|
3464
|
-
]
|
3465
|
-
}
|
3466
|
-
],
|
3467
3789
|
actions: [
|
3468
3790
|
{
|
3469
3791
|
type: ActionType.DECLARE,
|
@@ -3472,7 +3794,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3472
3794
|
description: "This is shown as the action name anywhere the user can trigger the action from",
|
3473
3795
|
id: "event.tennis-club-membership.action.declare.label"
|
3474
3796
|
},
|
3475
|
-
|
3797
|
+
review: TENNIS_CLUB_DECLARATION_REVIEW
|
3476
3798
|
},
|
3477
3799
|
{
|
3478
3800
|
type: ActionType.VALIDATE,
|
@@ -3481,7 +3803,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3481
3803
|
description: "This is shown as the action name anywhere the user can trigger the action from",
|
3482
3804
|
id: "event.tennis-club-membership.action.validate.label"
|
3483
3805
|
},
|
3484
|
-
|
3806
|
+
review: TENNIS_CLUB_DECLARATION_REVIEW
|
3485
3807
|
},
|
3486
3808
|
{
|
3487
3809
|
type: ActionType.REGISTER,
|
@@ -3490,7 +3812,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3490
3812
|
description: "This is shown as the action name anywhere the user can trigger the action from",
|
3491
3813
|
id: "event.tennis-club-membership.action.register.label"
|
3492
3814
|
},
|
3493
|
-
|
3815
|
+
review: TENNIS_CLUB_DECLARATION_REVIEW
|
3494
3816
|
},
|
3495
3817
|
{
|
3496
3818
|
type: ActionType.REQUEST_CORRECTION,
|
@@ -3499,10 +3821,10 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3499
3821
|
description: "This is shown as the action name anywhere the user can trigger the action from",
|
3500
3822
|
id: "event.tennis-club-membership.action.correction.request.label"
|
3501
3823
|
},
|
3502
|
-
forms: [TENNIS_CLUB_FORM],
|
3503
3824
|
onboardingForm: [
|
3504
3825
|
{
|
3505
3826
|
id: "correction-requester",
|
3827
|
+
type: PageTypes.enum.FORM,
|
3506
3828
|
title: {
|
3507
3829
|
id: "event.tennis-club-membership.action.requestCorrection.form.section.corrector",
|
3508
3830
|
defaultMessage: "Correction requester",
|
@@ -3566,6 +3888,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3566
3888
|
},
|
3567
3889
|
{
|
3568
3890
|
id: "identity-check",
|
3891
|
+
type: PageTypes.enum.FORM,
|
3569
3892
|
title: {
|
3570
3893
|
id: "event.tennis-club-membership.action.requestCorrection.form.section.verify",
|
3571
3894
|
defaultMessage: "Verify their identity",
|
@@ -3608,6 +3931,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3608
3931
|
additionalDetailsForm: [
|
3609
3932
|
{
|
3610
3933
|
id: "correction-request.supporting-documents",
|
3934
|
+
type: PageTypes.enum.FORM,
|
3611
3935
|
title: {
|
3612
3936
|
id: "event.tennis-club-membership.action.requestCorrection.form.section.verify",
|
3613
3937
|
defaultMessage: "Upload supporting documents",
|
@@ -3625,7 +3949,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3625
3949
|
},
|
3626
3950
|
{
|
3627
3951
|
id: "correction.supportingDocs",
|
3628
|
-
type:
|
3952
|
+
type: FieldType.FILE,
|
3629
3953
|
label: {
|
3630
3954
|
id: "correction.corrector.title",
|
3631
3955
|
defaultMessage: "Upload supporting documents",
|
@@ -3669,6 +3993,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3669
3993
|
},
|
3670
3994
|
{
|
3671
3995
|
id: "correction-request.additional-details",
|
3996
|
+
type: PageTypes.enum.FORM,
|
3672
3997
|
title: {
|
3673
3998
|
id: "event.tennis-club-membership.action.requestCorrection.form.section.corrector",
|
3674
3999
|
defaultMessage: "Reason for correction",
|
@@ -3677,7 +4002,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3677
4002
|
fields: [
|
3678
4003
|
{
|
3679
4004
|
id: "correction.request.reason",
|
3680
|
-
type:
|
4005
|
+
type: FieldType.TEXT,
|
3681
4006
|
label: {
|
3682
4007
|
id: "correction.reason.title",
|
3683
4008
|
defaultMessage: "Reason for correction?",
|
@@ -3690,7 +4015,6 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3690
4015
|
},
|
3691
4016
|
{
|
3692
4017
|
type: ActionType.APPROVE_CORRECTION,
|
3693
|
-
forms: [TENNIS_CLUB_FORM],
|
3694
4018
|
label: {
|
3695
4019
|
defaultMessage: "Approve correction",
|
3696
4020
|
description: "This is shown as the action name anywhere the user can trigger the action from",
|
@@ -3704,7 +4028,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3704
4028
|
defaultMessage: "Print certificate",
|
3705
4029
|
description: "This is shown as the action name anywhere the user can trigger the action from"
|
3706
4030
|
},
|
3707
|
-
|
4031
|
+
printForm: PRINT_CERTIFICATE_FORM,
|
3708
4032
|
conditionals: [
|
3709
4033
|
{
|
3710
4034
|
type: "SHOW",
|
@@ -3751,8 +4075,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3751
4075
|
id: "v2.event.tennis-club-membership.action.archive.label",
|
3752
4076
|
defaultMessage: "Archive",
|
3753
4077
|
description: "This is shown as the action name anywhere the user can trigger the action from"
|
3754
|
-
}
|
3755
|
-
forms: [TENNIS_CLUB_FORM]
|
4078
|
+
}
|
3756
4079
|
},
|
3757
4080
|
{
|
3758
4081
|
type: ActionType.REJECT,
|
@@ -3760,8 +4083,7 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3760
4083
|
id: "v2.event.tennis-club-membership.action.reject.label",
|
3761
4084
|
defaultMessage: "Reject",
|
3762
4085
|
description: "This is shown as the action name anywhere the user can trigger the action from"
|
3763
|
-
}
|
3764
|
-
forms: [TENNIS_CLUB_FORM]
|
4086
|
+
}
|
3765
4087
|
}
|
3766
4088
|
],
|
3767
4089
|
advancedSearch: [
|
@@ -3771,39 +4093,55 @@ var tennisClubMembershipEvent = defineConfig({
|
|
3771
4093
|
description: "This is what this event is referred as in the system",
|
3772
4094
|
id: "v2.event.tennis-club-membership.search"
|
3773
4095
|
},
|
3774
|
-
fields: [
|
3775
|
-
{
|
3776
|
-
fieldId: "applicant.dob"
|
3777
|
-
}
|
3778
|
-
]
|
4096
|
+
fields: [field("applicant.dob").exact()]
|
3779
4097
|
}
|
3780
|
-
]
|
4098
|
+
],
|
4099
|
+
declaration: TENNIS_CLUB_DECLARATION_FORM
|
3781
4100
|
});
|
3782
4101
|
|
3783
4102
|
// ../commons/src/events/test.utils.ts
|
3784
|
-
function
|
3785
|
-
|
3786
|
-
const data = fields.reduce(
|
4103
|
+
function fieldConfigsToActionPayload(fields) {
|
4104
|
+
return fields.reduce(
|
3787
4105
|
(acc, field2, i) => ({
|
3788
4106
|
...acc,
|
3789
4107
|
[field2.id]: mapFieldTypeToMockValue(field2, i)
|
3790
4108
|
}),
|
3791
4109
|
{}
|
3792
4110
|
);
|
3793
|
-
|
3794
|
-
|
3795
|
-
|
3796
|
-
|
3797
|
-
configuration
|
3798
|
-
|
3799
|
-
|
3800
|
-
|
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(
|
3801
4134
|
(acc, pageId) => ({
|
3802
4135
|
...acc,
|
3803
4136
|
[pageId]: true
|
3804
4137
|
}),
|
3805
4138
|
{}
|
3806
4139
|
);
|
4140
|
+
const fieldBasedPayload = omitHiddenFields(annotationFields, annotation);
|
4141
|
+
return {
|
4142
|
+
...fieldBasedPayload,
|
4143
|
+
...visiblePageVerificationMap
|
4144
|
+
};
|
3807
4145
|
}
|
3808
4146
|
var eventPayloadGenerator = {
|
3809
4147
|
create: (input = {}) => ({
|
@@ -3815,27 +4153,31 @@ var eventPayloadGenerator = {
|
|
3815
4153
|
type: input.type ?? "TENNIS_CLUB_MEMBERSHIP",
|
3816
4154
|
id
|
3817
4155
|
}),
|
3818
|
-
draft: (eventId, input = {}) => (0, import_lodash2.merge)(
|
4156
|
+
draft: ({ eventId, actionType }, input = {}) => (0, import_lodash2.merge)(
|
3819
4157
|
{
|
3820
4158
|
id: getUUID(),
|
3821
4159
|
eventId,
|
3822
4160
|
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
3823
4161
|
transactionId: getUUID(),
|
3824
4162
|
action: {
|
3825
|
-
|
3826
|
-
|
4163
|
+
transactionId: getUUID(),
|
4164
|
+
type: actionType,
|
4165
|
+
status: ActionStatus.Accepted,
|
4166
|
+
declaration: {
|
3827
4167
|
"applicant.firstname": "Max",
|
3828
4168
|
"applicant.surname": "McLaren",
|
3829
4169
|
"applicant.dob": "2020-01-02",
|
3830
4170
|
"recommender.none": true
|
3831
4171
|
},
|
3832
|
-
|
4172
|
+
annotation: {
|
3833
4173
|
"correction.requester.relationship": "ANOTHER_AGENT",
|
3834
4174
|
"correction.request.reason": "Child's name was incorrect"
|
3835
4175
|
},
|
3836
4176
|
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
3837
4177
|
createdBy: "@todo",
|
3838
|
-
|
4178
|
+
createdByRole: "@todo",
|
4179
|
+
createdAtLocation: "@todo",
|
4180
|
+
updatedAtLocation: "@todo"
|
3839
4181
|
}
|
3840
4182
|
},
|
3841
4183
|
input
|
@@ -3844,45 +4186,104 @@ var eventPayloadGenerator = {
|
|
3844
4186
|
declare: (eventId, input = {}) => ({
|
3845
4187
|
type: ActionType.DECLARE,
|
3846
4188
|
transactionId: input.transactionId ?? getUUID(),
|
3847
|
-
|
4189
|
+
declaration: input.declaration ?? generateActionDeclarationInput(
|
4190
|
+
tennisClubMembershipEvent,
|
4191
|
+
ActionType.DECLARE
|
4192
|
+
),
|
4193
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
4194
|
+
tennisClubMembershipEvent,
|
4195
|
+
ActionType.DECLARE
|
4196
|
+
),
|
3848
4197
|
eventId
|
3849
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
|
+
},
|
3850
4221
|
validate: (eventId, input = {}) => ({
|
3851
4222
|
type: ActionType.VALIDATE,
|
3852
4223
|
transactionId: input.transactionId ?? getUUID(),
|
3853
|
-
|
4224
|
+
declaration: input.declaration ?? generateActionDeclarationInput(
|
4225
|
+
tennisClubMembershipEvent,
|
4226
|
+
ActionType.VALIDATE
|
4227
|
+
),
|
4228
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
4229
|
+
tennisClubMembershipEvent,
|
4230
|
+
ActionType.VALIDATE
|
4231
|
+
),
|
3854
4232
|
duplicates: [],
|
3855
4233
|
eventId
|
3856
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
|
+
}),
|
3857
4249
|
archive: (eventId, input = {}, isDuplicate) => ({
|
3858
4250
|
type: ActionType.ARCHIVE,
|
3859
4251
|
transactionId: input.transactionId ?? getUUID(),
|
3860
|
-
|
3861
|
-
|
4252
|
+
declaration: {},
|
4253
|
+
// @TODO: Check whether generator is needed?
|
4254
|
+
annotation: { isDuplicate: isDuplicate ?? false },
|
3862
4255
|
duplicates: [],
|
3863
4256
|
eventId
|
3864
4257
|
}),
|
3865
4258
|
reject: (eventId, input = {}) => ({
|
3866
4259
|
type: ActionType.REJECT,
|
3867
4260
|
transactionId: input.transactionId ?? getUUID(),
|
3868
|
-
|
4261
|
+
declaration: {},
|
4262
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
4263
|
+
tennisClubMembershipEvent,
|
4264
|
+
ActionType.REJECT
|
4265
|
+
),
|
3869
4266
|
duplicates: [],
|
3870
4267
|
eventId
|
3871
4268
|
}),
|
3872
4269
|
register: (eventId, input = {}) => ({
|
3873
4270
|
type: ActionType.REGISTER,
|
3874
4271
|
transactionId: input.transactionId ?? getUUID(),
|
3875
|
-
|
4272
|
+
declaration: input.declaration ?? generateActionDeclarationInput(
|
4273
|
+
tennisClubMembershipEvent,
|
4274
|
+
ActionType.REGISTER
|
4275
|
+
),
|
4276
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
4277
|
+
tennisClubMembershipEvent,
|
4278
|
+
ActionType.REGISTER
|
4279
|
+
),
|
3876
4280
|
eventId
|
3877
4281
|
}),
|
3878
4282
|
printCertificate: (eventId, input = {}) => ({
|
3879
4283
|
type: ActionType.PRINT_CERTIFICATE,
|
3880
4284
|
transactionId: input.transactionId ?? getUUID(),
|
3881
|
-
|
3882
|
-
|
3883
|
-
ActionType.PRINT_CERTIFICATE
|
3884
|
-
),
|
3885
|
-
metadata: input.metadata ?? generateActionMetadataInput(
|
4285
|
+
declaration: {},
|
4286
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
3886
4287
|
tennisClubMembershipEvent,
|
3887
4288
|
ActionType.PRINT_CERTIFICATE
|
3888
4289
|
),
|
@@ -3892,17 +4293,21 @@ var eventPayloadGenerator = {
|
|
3892
4293
|
request: (eventId, input = {}) => ({
|
3893
4294
|
type: ActionType.REQUEST_CORRECTION,
|
3894
4295
|
transactionId: input.transactionId ?? getUUID(),
|
3895
|
-
|
4296
|
+
declaration: input.declaration ?? generateActionDeclarationInput(
|
4297
|
+
tennisClubMembershipEvent,
|
4298
|
+
ActionType.REQUEST_CORRECTION
|
4299
|
+
),
|
4300
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
3896
4301
|
tennisClubMembershipEvent,
|
3897
4302
|
ActionType.REQUEST_CORRECTION
|
3898
4303
|
),
|
3899
|
-
metadata: {},
|
3900
4304
|
eventId
|
3901
4305
|
}),
|
3902
4306
|
approve: (eventId, requestId, input = {}) => ({
|
3903
4307
|
type: ActionType.APPROVE_CORRECTION,
|
3904
4308
|
transactionId: input.transactionId ?? getUUID(),
|
3905
|
-
|
4309
|
+
declaration: {},
|
4310
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
3906
4311
|
tennisClubMembershipEvent,
|
3907
4312
|
ActionType.APPROVE_CORRECTION
|
3908
4313
|
),
|
@@ -3912,7 +4317,8 @@ var eventPayloadGenerator = {
|
|
3912
4317
|
reject: (eventId, requestId, input = {}) => ({
|
3913
4318
|
type: ActionType.REJECT_CORRECTION,
|
3914
4319
|
transactionId: input.transactionId ?? getUUID(),
|
3915
|
-
|
4320
|
+
declaration: {},
|
4321
|
+
annotation: input.annotation ?? generateActionAnnotationInput(
|
3916
4322
|
tennisClubMembershipEvent,
|
3917
4323
|
ActionType.REJECT_CORRECTION
|
3918
4324
|
),
|
@@ -3932,17 +4338,25 @@ function generateActionDocument({
|
|
3932
4338
|
// @TODO: This should be fixed in the future.
|
3933
4339
|
createdAt: new Date(Date.now() - 500).toISOString(),
|
3934
4340
|
createdBy: getUUID(),
|
4341
|
+
createdByRole: "FIELD_AGENT",
|
3935
4342
|
id: getUUID(),
|
3936
4343
|
createdAtLocation: "TODO",
|
3937
|
-
|
3938
|
-
|
3939
|
-
|
4344
|
+
updatedAtLocation: "TODO",
|
4345
|
+
declaration: generateActionDeclarationInput(configuration, action),
|
4346
|
+
annotation: {},
|
4347
|
+
...defaults,
|
4348
|
+
status: ActionStatus.Accepted,
|
4349
|
+
transactionId: getUUID()
|
3940
4350
|
};
|
3941
4351
|
switch (action) {
|
4352
|
+
case ActionType.READ:
|
4353
|
+
return { ...actionBase, type: action };
|
4354
|
+
case ActionType.MARKED_AS_DUPLICATE:
|
4355
|
+
return { ...actionBase, type: action };
|
3942
4356
|
case ActionType.DECLARE:
|
3943
4357
|
return { ...actionBase, type: action };
|
3944
4358
|
case ActionType.UNASSIGN:
|
3945
|
-
return { ...actionBase, type: action };
|
4359
|
+
return { ...actionBase, type: action, assignedTo: null };
|
3946
4360
|
case ActionType.ASSIGN:
|
3947
4361
|
return { ...actionBase, assignedTo: getUUID(), type: action };
|
3948
4362
|
case ActionType.VALIDATE:
|
@@ -3963,14 +4377,13 @@ function generateActionDocument({
|
|
3963
4377
|
return { ...actionBase, requestId: getUUID(), type: action };
|
3964
4378
|
case ActionType.REJECT_CORRECTION:
|
3965
4379
|
return { ...actionBase, requestId: getUUID(), type: action };
|
3966
|
-
case ActionType.CUSTOM:
|
3967
|
-
return { ...actionBase, type: action };
|
3968
4380
|
case ActionType.REGISTER:
|
3969
4381
|
return {
|
3970
4382
|
...actionBase,
|
3971
|
-
type: action
|
3972
|
-
identifiers: { trackingId: getUUID(), registrationNumber: getUUID() }
|
4383
|
+
type: action
|
3973
4384
|
};
|
4385
|
+
case ActionType.DELETE:
|
4386
|
+
case ActionType.DETECT_DUPLICATE:
|
3974
4387
|
default:
|
3975
4388
|
throw new Error(`Unsupported action type: ${action}`);
|
3976
4389
|
}
|
@@ -3991,10 +4404,12 @@ function generateEventDocument({
|
|
3991
4404
|
id: getUUID(),
|
3992
4405
|
// Offset is needed so the createdAt timestamps for events, actions and drafts make logical sense in storybook tests.
|
3993
4406
|
// @TODO: This should be fixed in the future.
|
3994
|
-
updatedAt: new Date(Date.now() - 1e3).toISOString()
|
4407
|
+
updatedAt: new Date(Date.now() - 1e3).toISOString(),
|
4408
|
+
dateOfEvent: configuration.dateOfEvent,
|
4409
|
+
updatedAtLocation: getUUID()
|
3995
4410
|
};
|
3996
4411
|
}
|
3997
|
-
function generateEventDraftDocument(eventId, actionType = ActionType.DECLARE,
|
4412
|
+
function generateEventDraftDocument(eventId, actionType = ActionType.DECLARE, declaration = {}) {
|
3998
4413
|
const action = generateActionDocument({
|
3999
4414
|
configuration: tennisClubMembershipEvent,
|
4000
4415
|
action: actionType
|
@@ -4004,9 +4419,9 @@ function generateEventDraftDocument(eventId, actionType = ActionType.DECLARE, da
|
|
4004
4419
|
transactionId: getUUID(),
|
4005
4420
|
action: {
|
4006
4421
|
...action,
|
4007
|
-
|
4008
|
-
...action.
|
4009
|
-
...
|
4422
|
+
declaration: {
|
4423
|
+
...action.declaration,
|
4424
|
+
...declaration
|
4010
4425
|
}
|
4011
4426
|
},
|
4012
4427
|
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
@@ -4020,10 +4435,12 @@ var eventQueryDataGenerator = (overrides = {}) => ({
|
|
4020
4435
|
createdAt: overrides.createdAt ?? (/* @__PURE__ */ new Date()).toISOString(),
|
4021
4436
|
createdBy: overrides.createdBy ?? getUUID(),
|
4022
4437
|
createdAtLocation: overrides.createdAtLocation ?? getUUID(),
|
4023
|
-
|
4438
|
+
updatedAtLocation: overrides.updatedAtLocation ?? getUUID(),
|
4439
|
+
updatedAt: overrides.updatedAt ?? (/* @__PURE__ */ new Date()).toISOString(),
|
4024
4440
|
assignedTo: overrides.assignedTo ?? null,
|
4025
4441
|
updatedBy: overrides.updatedBy ?? getUUID(),
|
4026
|
-
|
4442
|
+
updatedByUserRole: overrides.updatedByUserRole ?? "FIELD_AGENT",
|
4443
|
+
declaration: overrides.declaration ?? {
|
4027
4444
|
"recommender.none": true,
|
4028
4445
|
"applicant.firstname": "Danny",
|
4029
4446
|
"applicant.surname": "Doe",
|
@@ -4054,7 +4471,9 @@ function isFieldValueWithoutTemplates(value) {
|
|
4054
4471
|
return true;
|
4055
4472
|
}
|
4056
4473
|
function isFieldConfigDefaultValue(value) {
|
4057
|
-
if (!value)
|
4474
|
+
if (!value) {
|
4475
|
+
return false;
|
4476
|
+
}
|
4058
4477
|
if (isFieldValue(value)) {
|
4059
4478
|
return true;
|
4060
4479
|
}
|
@@ -4066,3 +4485,213 @@ function isFieldConfigDefaultValue(value) {
|
|
4066
4485
|
}
|
4067
4486
|
return false;
|
4068
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());
|