@opencrvs/toolkit 1.8.0-rc.f7910f3 → 1.8.0-rc.f7aaf07

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. package/README.md +1 -1
  2. package/dist/commons/api/router.d.ts +20619 -14618
  3. package/dist/commons/conditionals/conditionals.d.ts +36 -6
  4. package/dist/commons/conditionals/validate.d.ts +18 -17
  5. package/dist/commons/events/ActionConfig.d.ts +116370 -6084
  6. package/dist/commons/events/ActionDocument.d.ts +9528 -401
  7. package/dist/commons/events/ActionInput.d.ts +3536 -519
  8. package/dist/commons/events/ActionType.d.ts +32 -16
  9. package/dist/commons/events/AdvancedSearchConfig.d.ts +1233 -22
  10. package/dist/commons/events/CompositeFieldValue.d.ts +31 -0
  11. package/dist/commons/events/Conditional.d.ts +21 -5
  12. package/dist/commons/events/Constants.d.ts +3 -0
  13. package/dist/commons/events/CountryConfigQueryInput.d.ts +3068 -0
  14. package/dist/commons/events/CreatedAtLocation.d.ts +3 -0
  15. package/dist/commons/events/Draft.d.ts +193 -59
  16. package/dist/commons/events/EventConfig.d.ts +55962 -3150
  17. package/dist/commons/events/EventConfigInput.d.ts +5 -2
  18. package/dist/commons/events/EventDocument.d.ts +2192 -552
  19. package/dist/commons/events/EventIndex.d.ts +2026 -22
  20. package/dist/commons/events/EventMetadata.d.ts +332 -40
  21. package/dist/commons/events/FieldConfig.d.ts +5678 -1061
  22. package/dist/commons/events/FieldType.d.ts +6 -3
  23. package/dist/commons/events/FieldTypeMapping.d.ts +103 -54
  24. package/dist/commons/events/FieldValue.d.ts +49 -8
  25. package/dist/commons/events/FormConfig.d.ts +49225 -346
  26. package/dist/commons/events/PageConfig.d.ts +12337 -0
  27. package/dist/commons/events/SummaryConfig.d.ts +93 -42
  28. package/dist/commons/events/TemplateConfig.d.ts +5 -5
  29. package/dist/commons/events/User.d.ts +31 -2
  30. package/dist/commons/events/WorkqueueColumnConfig.d.ts +53 -0
  31. package/dist/commons/events/WorkqueueConfig.d.ts +6290 -20
  32. package/dist/commons/events/defineConfig.d.ts +9039 -501
  33. package/dist/commons/events/event.d.ts +54 -0
  34. package/dist/commons/events/field.d.ts +82 -0
  35. package/dist/commons/events/index.d.ts +10 -1
  36. package/dist/commons/events/scopes.d.ts +44 -0
  37. package/dist/commons/events/serializer.d.ts +2 -0
  38. package/dist/commons/events/test.utils.d.ts +161 -300
  39. package/dist/commons/events/utils.d.ts +13384 -186
  40. package/dist/commons/events/utils.test.d.ts +2 -0
  41. package/dist/commons/events/workqueueDefaultColumns.d.ts +3 -0
  42. package/dist/conditionals/index.js +228 -120
  43. package/dist/events/index.js +5066 -2198
  44. package/dist/scopes/index.d.ts +161 -1
  45. package/dist/scopes/index.js +202 -1
  46. package/package.json +3 -2
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.test.d.ts.map
@@ -0,0 +1,3 @@
1
+ import { WorkqueueColumn } from './WorkqueueColumnConfig';
2
+ export declare const defaultWorkqueueColumns: WorkqueueColumn[];
3
+ //# sourceMappingURL=workqueueDefaultColumns.d.ts.map
@@ -22,19 +22,48 @@ var conditionals_exports = {};
22
22
  __export(conditionals_exports, {
23
23
  alwaysTrue: () => alwaysTrue,
24
24
  and: () => and,
25
+ createEventConditionals: () => createEventConditionals,
26
+ createFieldConditionals: () => createFieldConditionals,
25
27
  defineConditional: () => defineConditional,
26
- event: () => event,
27
- field: () => field,
28
+ defineFormConditional: () => defineFormConditional,
29
+ never: () => never,
28
30
  not: () => not,
29
31
  or: () => or,
30
32
  user: () => user
31
33
  });
32
34
  module.exports = __toCommonJS(conditionals_exports);
33
35
 
36
+ // ../commons/src/events/serializers/user/serializer.ts
37
+ var import_zod = require("zod");
38
+ var SerializedUserField = import_zod.z.object({
39
+ $userField: import_zod.z.enum([
40
+ "id",
41
+ "name",
42
+ "role",
43
+ "signatureFilename",
44
+ "primaryOfficeId"
45
+ ])
46
+ });
47
+ function userSerializer(userField) {
48
+ return {
49
+ $userField: userField
50
+ };
51
+ }
52
+
34
53
  // ../commons/src/conditionals/conditionals.ts
35
54
  function defineConditional(schema) {
36
55
  return schema;
37
56
  }
57
+ function defineFormConditional(schema) {
58
+ const schemaWithForm = {
59
+ type: "object",
60
+ properties: {
61
+ $form: schema
62
+ },
63
+ required: ["$form"]
64
+ };
65
+ return defineConditional(schemaWithForm);
66
+ }
38
67
  function alwaysTrue() {
39
68
  return {};
40
69
  }
@@ -59,7 +88,10 @@ function not(condition) {
59
88
  required: []
60
89
  });
61
90
  }
62
- var user = {
91
+ function never() {
92
+ return not(alwaysTrue());
93
+ }
94
+ var user = Object.assign(userSerializer, {
63
95
  hasScope: (scope) => defineConditional({
64
96
  type: "object",
65
97
  properties: {
@@ -79,96 +111,153 @@ var user = {
79
111
  },
80
112
  required: ["$user"]
81
113
  })
82
- };
83
- var event = {
84
- hasAction: (action) => defineConditional({
114
+ });
115
+ function createEventConditionals() {
116
+ return {
117
+ /**
118
+ * Checks if the event contains a specific action type.
119
+ * @param action - The action type to check for.
120
+ */
121
+ hasAction: (action) => defineConditional({
122
+ type: "object",
123
+ properties: {
124
+ $event: {
125
+ type: "object",
126
+ properties: {
127
+ actions: {
128
+ type: "array",
129
+ contains: {
130
+ type: "object",
131
+ properties: {
132
+ type: {
133
+ const: action
134
+ }
135
+ },
136
+ required: ["type"]
137
+ }
138
+ }
139
+ },
140
+ required: ["actions"]
141
+ }
142
+ },
143
+ required: ["$event"]
144
+ })
145
+ };
146
+ }
147
+ function getDateFromNow(days) {
148
+ return new Date(Date.now() - days * 24 * 60 * 60 * 1e3).toISOString().split("T")[0];
149
+ }
150
+ function getDateRangeToFieldReference(fieldId, comparedFieldId, clause) {
151
+ return {
85
152
  type: "object",
86
153
  properties: {
87
- $event: {
88
- type: "object",
89
- properties: {
90
- actions: {
91
- type: "array",
92
- contains: {
93
- type: "object",
94
- properties: {
95
- type: {
96
- const: action
97
- }
98
- },
99
- required: ["type"]
100
- }
101
- }
102
- },
103
- required: ["actions"]
104
- }
154
+ [fieldId]: {
155
+ type: "string",
156
+ format: "date",
157
+ [clause]: { $data: `1/${comparedFieldId}` }
158
+ },
159
+ [comparedFieldId]: { type: "string", format: "date" }
105
160
  },
106
- required: ["$event"]
107
- })
108
- };
109
- function field(fieldId) {
110
- const getDateFromNow = (days) => new Date(Date.now() - days * 24 * 60 * 60 * 1e3).toISOString().split("T")[0];
161
+ required: [fieldId]
162
+ };
163
+ }
164
+ function isFieldReference(value) {
165
+ return typeof value === "object" && value !== null && "$$field" in value;
166
+ }
167
+ function createFieldConditionals(fieldId) {
111
168
  const getDateRange = (date, clause) => ({
112
169
  type: "object",
113
170
  properties: {
114
- $form: {
115
- type: "object",
116
- properties: {
117
- [fieldId]: {
118
- type: "string",
119
- format: "date",
120
- [clause]: date
121
- }
122
- },
123
- required: [fieldId]
171
+ [fieldId]: {
172
+ type: "string",
173
+ format: "date",
174
+ [clause]: date
124
175
  }
125
176
  },
126
- required: ["$form"]
177
+ required: [fieldId]
127
178
  });
128
179
  return {
180
+ /**
181
+ * @private Internal property used for field reference tracking.
182
+ */
183
+ $$field: fieldId,
129
184
  isAfter: () => ({
130
185
  days: (days) => ({
131
- inPast: () => defineConditional(
186
+ inPast: () => defineFormConditional(
132
187
  getDateRange(getDateFromNow(days), "formatMinimum")
133
188
  ),
134
- inFuture: () => defineConditional(
189
+ inFuture: () => defineFormConditional(
135
190
  getDateRange(getDateFromNow(-days), "formatMinimum")
136
191
  )
137
192
  }),
138
- date: (date) => defineConditional(getDateRange(date, "formatMinimum")),
139
- now: () => defineConditional(getDateRange(getDateFromNow(0), "formatMinimum"))
193
+ date: (date) => {
194
+ if (isFieldReference(date)) {
195
+ const comparedFieldId = date.$$field;
196
+ return defineFormConditional(
197
+ getDateRangeToFieldReference(
198
+ fieldId,
199
+ comparedFieldId,
200
+ "formatMinimum"
201
+ )
202
+ );
203
+ }
204
+ return defineFormConditional(getDateRange(date, "formatMinimum"));
205
+ },
206
+ now: () => defineFormConditional(getDateRange(getDateFromNow(0), "formatMinimum"))
140
207
  }),
141
208
  isBefore: () => ({
142
209
  days: (days) => ({
143
- inPast: () => defineConditional(
210
+ inPast: () => defineFormConditional(
144
211
  getDateRange(getDateFromNow(days), "formatMaximum")
145
212
  ),
146
- inFuture: () => defineConditional(
213
+ inFuture: () => defineFormConditional(
147
214
  getDateRange(getDateFromNow(-days), "formatMaximum")
148
215
  )
149
216
  }),
150
- date: (date) => defineConditional(getDateRange(date, "formatMaximum")),
151
- now: () => defineConditional(getDateRange(getDateFromNow(0), "formatMaximum"))
217
+ date: (date) => {
218
+ if (isFieldReference(date)) {
219
+ const comparedFieldId = date.$$field;
220
+ return defineFormConditional(
221
+ getDateRangeToFieldReference(
222
+ fieldId,
223
+ comparedFieldId,
224
+ "formatMaximum"
225
+ )
226
+ );
227
+ }
228
+ return defineFormConditional(getDateRange(date, "formatMaximum"));
229
+ },
230
+ now: () => defineFormConditional(getDateRange(getDateFromNow(0), "formatMaximum"))
152
231
  }),
153
- isEqualTo: (value) => defineConditional({
154
- type: "object",
155
- properties: {
156
- $form: {
232
+ isEqualTo: (value) => {
233
+ if (isFieldReference(value)) {
234
+ const comparedFieldId = value.$$field;
235
+ return defineFormConditional({
157
236
  type: "object",
158
237
  properties: {
159
238
  [fieldId]: {
160
- oneOf: [
161
- { type: "string", const: value },
162
- { type: "boolean", const: value }
163
- ],
164
- const: value
165
- }
239
+ type: ["string", "boolean"],
240
+ const: { $data: `/$form/${comparedFieldId}` }
241
+ },
242
+ [comparedFieldId]: { type: ["string", "boolean"] }
166
243
  },
167
- required: [fieldId]
168
- }
169
- },
170
- required: ["$form"]
171
- }),
244
+ required: [fieldId, comparedFieldId]
245
+ });
246
+ }
247
+ return defineFormConditional({
248
+ type: "object",
249
+ properties: {
250
+ [fieldId]: {
251
+ oneOf: [
252
+ { type: "string", const: value },
253
+ { type: "boolean", const: value }
254
+ ],
255
+ const: value
256
+ }
257
+ },
258
+ required: [fieldId]
259
+ });
260
+ },
172
261
  /**
173
262
  * Use case: Some fields are rendered when selection is not made, or boolean false is explicitly selected.
174
263
  * @example field('recommender.none').isFalsy() vs not(field('recommender.none').isEqualTo(true))
@@ -177,85 +266,104 @@ function field(fieldId) {
177
266
  * NOTE: For now, this only works with string, boolean, and null types. 0 is still allowed.
178
267
  *
179
268
  */
180
- isFalsy: () => defineConditional({
269
+ isFalsy: () => defineFormConditional({
181
270
  type: "object",
182
271
  properties: {
183
- $form: {
184
- type: "object",
185
- properties: {
186
- [fieldId]: {
187
- anyOf: [
188
- { const: "undefined" },
189
- { const: false },
190
- { const: null },
191
- { const: "" }
192
- ]
193
- }
194
- },
272
+ [fieldId]: {
195
273
  anyOf: [
196
- {
197
- required: [fieldId]
198
- },
199
- {
200
- not: {
201
- required: [fieldId]
202
- }
203
- }
274
+ { const: "undefined" },
275
+ { const: false },
276
+ { const: null },
277
+ { const: "" }
204
278
  ]
205
279
  }
206
280
  },
207
- required: ["$form"]
208
- }),
209
- isUndefined: () => defineConditional({
210
- type: "object",
211
- properties: {
212
- $form: {
213
- type: "object",
214
- properties: {
215
- [fieldId]: {
216
- type: "string",
217
- enum: ["undefined"]
218
- }
219
- },
281
+ anyOf: [
282
+ {
283
+ required: [fieldId]
284
+ },
285
+ {
220
286
  not: {
221
287
  required: [fieldId]
222
288
  }
223
289
  }
290
+ ]
291
+ }),
292
+ isUndefined: () => defineFormConditional({
293
+ type: "object",
294
+ properties: {
295
+ [fieldId]: {
296
+ type: "string",
297
+ enum: ["undefined"]
298
+ }
224
299
  },
225
- required: ["$form"]
300
+ not: {
301
+ required: [fieldId]
302
+ }
226
303
  }),
227
- inArray: (values) => defineConditional({
304
+ inArray: (values) => defineFormConditional({
228
305
  type: "object",
229
306
  properties: {
230
- $form: {
231
- type: "object",
232
- properties: {
233
- [fieldId]: {
234
- type: "string",
235
- enum: values
236
- }
237
- },
238
- required: [fieldId]
307
+ [fieldId]: {
308
+ type: "string",
309
+ enum: values
310
+ }
311
+ },
312
+ required: [fieldId]
313
+ }),
314
+ isValidEnglishName: () => defineFormConditional({
315
+ type: "object",
316
+ properties: {
317
+ [fieldId]: {
318
+ type: "string",
319
+ 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'._-]*)*$",
320
+ description: "Name must contain only letters, numbers, and allowed special characters ('._-). No double spaces."
321
+ }
322
+ },
323
+ required: [fieldId]
324
+ }),
325
+ /**
326
+ * Checks if the field value matches a given regular expression pattern.
327
+ * @param pattern - The regular expression pattern to match the field value against.
328
+ * @returns A JSONSchema conditional that validates the field value against the pattern.
329
+ */
330
+ matches: (pattern) => defineFormConditional({
331
+ type: "object",
332
+ properties: {
333
+ [fieldId]: {
334
+ type: "string",
335
+ pattern
336
+ }
337
+ },
338
+ required: [fieldId]
339
+ }),
340
+ isBetween: (min, max) => defineFormConditional({
341
+ type: "object",
342
+ properties: {
343
+ [fieldId]: {
344
+ type: "number",
345
+ minimum: min,
346
+ maximum: max
239
347
  }
240
348
  },
241
- required: ["$form"]
349
+ required: [fieldId]
242
350
  }),
243
- isValidEnglishName: () => defineConditional({
351
+ getId: () => ({ fieldId }),
352
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
353
+ object: (options) => defineFormConditional({
244
354
  type: "object",
245
355
  properties: {
246
- $form: {
356
+ [fieldId]: {
247
357
  type: "object",
248
- properties: {
249
- [fieldId]: {
250
- type: "string",
251
- 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'._-]*)*$",
252
- description: "Name must contain only letters, numbers, and allowed special characters ('._-). No double spaces."
253
- }
254
- },
255
- required: [fieldId]
358
+ properties: Object.fromEntries(
359
+ Object.entries(options).map(([key, value]) => {
360
+ return [key, value.properties.$form.properties[key]];
361
+ })
362
+ ),
363
+ required: Object.keys(options)
256
364
  }
257
365
  },
258
- required: ["$form"]
366
+ required: [fieldId]
259
367
  })
260
368
  };
261
369
  }