@opencrvs/toolkit 2.0.0-rc.fe35c20 → 2.0.0-rc.fe577a4

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.
@@ -353,6 +353,7 @@ var DateRangeFieldValue = z7.object({
353
353
  var EmailValue = z7.email();
354
354
  var CheckboxFieldValue = z7.boolean();
355
355
  var NumberFieldValue = z7.number();
356
+ var SignatureFieldValue = FileFieldValue;
356
357
  var ButtonFieldValue = z7.number();
357
358
  var VerificationStatusValue = z7.enum([
358
359
  "verified",
@@ -989,8 +990,9 @@ var RequestedCorrectionAction = ActionBase.extend(
989
990
  var ApprovedCorrectionAction = ActionBase.extend(
990
991
  z13.object({
991
992
  type: z13.literal(ActionType.APPROVE_CORRECTION),
992
- requestId: z13.string()
993
+ requestId: z13.string(),
993
994
  // TODO move into 'content' property
995
+ content: z13.object({ immediateCorrection: z13.boolean().optional() }).optional()
994
996
  }).shape
995
997
  );
996
998
  var RejectedCorrectionAction = ActionBase.extend(
@@ -1410,8 +1412,18 @@ var FieldReference = import_v43.default.object({
1410
1412
  $$field: FieldId.describe("Id of the field to reference"),
1411
1413
  $$subfield: import_v43.default.array(import_v43.default.string()).optional().default([]).describe(
1412
1414
  'If the FieldValue is an object, subfield can be used to refer to e.g. `["foo", "bar"]` in `{ foo: { bar: 3 } }`'
1415
+ ),
1416
+ $$code: import_v43.default.string().optional().describe(
1417
+ "Serialised client-side function body. When present the expression is evaluated rather than dereferenced."
1418
+ )
1419
+ }).describe(
1420
+ "Reference to a field value, with an optional client-side computation applied."
1421
+ );
1422
+ var ComputedDefaultValue = import_v43.default.object({
1423
+ $$code: import_v43.default.string().describe(
1424
+ "Serialised client-side function body. Receives (undefined, context) where context includes $now, $online, and system variables."
1413
1425
  )
1414
- }).describe("Reference to a field by its ID");
1426
+ }).describe("A context-only computation used as a field default value.");
1415
1427
  var ValidationConfig = import_v43.default.object({
1416
1428
  validator: Conditional.describe(
1417
1429
  "Conditional expression that must hold for the field value to be considered valid."
@@ -1452,7 +1464,7 @@ var BaseField = import_v43.default.object({
1452
1464
  "Indicates whether the field can be modified during record correction."
1453
1465
  ),
1454
1466
  value: FieldReference.or(import_v43.default.array(FieldReference)).optional().describe(
1455
- "Reference to the source field or fields. When a value is defined, it is copied from the parent field when changed. If multiple references are provided, the first truthy value is used."
1467
+ "Reference to the source field or fields. When a value is defined, it is copied from the parent field when changed. If multiple references are provided, the first truthy value is used. A FieldReference with $$code computes the value via a custom client-side function."
1456
1468
  ),
1457
1469
  analytics: import_v43.default.boolean().default(false).optional().describe(
1458
1470
  "Indicates whether the field is included in analytics. When enabled, its value becomes available in the analytics dashboard."
@@ -1466,7 +1478,7 @@ var Divider = BaseField.extend({
1466
1478
  });
1467
1479
  var TextField = BaseField.extend({
1468
1480
  type: import_v43.default.literal(FieldType.TEXT),
1469
- defaultValue: import_v43.default.union([NonEmptyTextValue, SerializedUserField]).optional(),
1481
+ defaultValue: import_v43.default.union([NonEmptyTextValue, SerializedUserField, ComputedDefaultValue]).optional(),
1470
1482
  configuration: import_v43.default.object({
1471
1483
  maxLength: import_v43.default.number().optional().describe("Maximum length of the text"),
1472
1484
  type: import_v43.default.enum(["text", "password"]).optional(),
@@ -1479,7 +1491,7 @@ var TextField = BaseField.extend({
1479
1491
  });
1480
1492
  var NumberField = BaseField.extend({
1481
1493
  type: import_v43.default.literal(FieldType.NUMBER),
1482
- defaultValue: NumberFieldValue.optional(),
1494
+ defaultValue: NumberFieldValue.or(ComputedDefaultValue).optional(),
1483
1495
  configuration: import_v43.default.object({
1484
1496
  min: import_v43.default.number().optional().describe("Minimum value"),
1485
1497
  max: import_v43.default.number().optional().describe("Maximum value"),
@@ -1492,7 +1504,7 @@ var NumberField = BaseField.extend({
1492
1504
  });
1493
1505
  var TextAreaField = BaseField.extend({
1494
1506
  type: import_v43.default.literal(FieldType.TEXTAREA),
1495
- defaultValue: NonEmptyTextValue.optional(),
1507
+ defaultValue: NonEmptyTextValue.or(ComputedDefaultValue).optional(),
1496
1508
  configuration: import_v43.default.object({
1497
1509
  maxLength: import_v43.default.number().optional().describe("Maximum length of the text"),
1498
1510
  rows: import_v43.default.number().optional().describe("Number of visible text lines"),
@@ -1526,7 +1538,7 @@ var SignatureField = BaseField.extend({
1526
1538
  signaturePromptLabel: TranslationConfig.describe(
1527
1539
  "Title of the signature modal"
1528
1540
  ),
1529
- defaultValue: FieldValue.optional(),
1541
+ defaultValue: SignatureFieldValue.or(ComputedDefaultValue).optional(),
1530
1542
  configuration: import_v43.default.object({
1531
1543
  maxFileSize: import_v43.default.number().describe("Maximum file size in bytes").default(DEFAULT_MAX_FILE_SIZE_BYTES),
1532
1544
  acceptedFileTypes: MimeType.array().optional().describe("List of allowed file formats for the signature")
@@ -1542,14 +1554,14 @@ var EmailField = BaseField.extend({
1542
1554
  configuration: import_v43.default.object({
1543
1555
  maxLength: import_v43.default.number().optional().describe("Maximum length of the text")
1544
1556
  }).default({ maxLength: 255 }).optional(),
1545
- defaultValue: NonEmptyTextValue.optional()
1557
+ defaultValue: NonEmptyTextValue.or(ComputedDefaultValue).optional()
1546
1558
  }).meta({
1547
1559
  description: "An email input field",
1548
1560
  id: "EmailField"
1549
1561
  });
1550
1562
  var DateField = BaseField.extend({
1551
1563
  type: import_v43.default.literal(FieldType.DATE),
1552
- defaultValue: SerializedNowDateTime.or(PlainDate).optional().describe("Default date value(yyyy-MM-dd)"),
1564
+ defaultValue: SerializedNowDateTime.or(PlainDate).or(ComputedDefaultValue).optional().describe("Default date value(yyyy-MM-dd)"),
1553
1565
  configuration: import_v43.default.object({
1554
1566
  notice: TranslationConfig.describe(
1555
1567
  "Text to display above the date input"
@@ -1561,7 +1573,7 @@ var DateField = BaseField.extend({
1561
1573
  });
1562
1574
  var AgeField = BaseField.extend({
1563
1575
  type: import_v43.default.literal(FieldType.AGE),
1564
- defaultValue: NumberFieldValue.optional(),
1576
+ defaultValue: NumberFieldValue.or(ComputedDefaultValue).optional(),
1565
1577
  configuration: import_v43.default.object({
1566
1578
  asOfDate: FieldReference,
1567
1579
  prefix: TranslationConfig.optional(),
@@ -1573,7 +1585,7 @@ var AgeField = BaseField.extend({
1573
1585
  });
1574
1586
  var TimeField = BaseField.extend({
1575
1587
  type: import_v43.default.literal(FieldType.TIME),
1576
- defaultValue: SerializedNowDateTime.or(TimeValue).optional().describe("Default time value (HH-mm)"),
1588
+ defaultValue: SerializedNowDateTime.or(TimeValue).or(ComputedDefaultValue).optional().describe("Default time value (HH-mm)"),
1577
1589
  configuration: import_v43.default.object({
1578
1590
  use12HourFormat: import_v43.default.boolean().optional().describe("Whether to use 12-hour format"),
1579
1591
  notice: TranslationConfig.describe(
@@ -1586,7 +1598,7 @@ var TimeField = BaseField.extend({
1586
1598
  });
1587
1599
  var DateRangeField = BaseField.extend({
1588
1600
  type: import_v43.default.literal(FieldType.DATE_RANGE),
1589
- defaultValue: DateRangeFieldValue.optional(),
1601
+ defaultValue: DateRangeFieldValue.or(ComputedDefaultValue).optional(),
1590
1602
  configuration: import_v43.default.object({
1591
1603
  notice: TranslationConfig.describe(
1592
1604
  "Text to display above the date input"
@@ -1665,7 +1677,7 @@ var PageHeader = BaseField.extend({
1665
1677
  });
1666
1678
  var File = BaseField.extend({
1667
1679
  type: import_v43.default.literal(FieldType.FILE),
1668
- defaultValue: FileFieldValue.optional(),
1680
+ defaultValue: FileFieldValue.or(ComputedDefaultValue).optional(),
1669
1681
  configuration: import_v43.default.object({
1670
1682
  maxFileSize: import_v43.default.number().describe("Maximum file size in bytes").default(DEFAULT_MAX_FILE_SIZE_BYTES),
1671
1683
  acceptedFileTypes: MimeType.array().optional().describe("List of allowed file formats for the signature"),
@@ -1692,7 +1704,7 @@ var SelectOption = import_v43.default.object({
1692
1704
  });
1693
1705
  var NumberWithUnitField = BaseField.extend({
1694
1706
  type: import_v43.default.literal(FieldType.NUMBER_WITH_UNIT),
1695
- defaultValue: NumberWithUnitFieldValue.optional(),
1707
+ defaultValue: NumberWithUnitFieldValue.or(ComputedDefaultValue).optional(),
1696
1708
  options: import_v43.default.array(SelectOption).describe("A list of options for the unit select"),
1697
1709
  configuration: import_v43.default.object({
1698
1710
  min: import_v43.default.number().optional().describe("Minimum value of the number field"),
@@ -1707,7 +1719,7 @@ var NumberWithUnitField = BaseField.extend({
1707
1719
  });
1708
1720
  var RadioGroup = BaseField.extend({
1709
1721
  type: import_v43.default.literal(FieldType.RADIO_GROUP),
1710
- defaultValue: TextValue.optional(),
1722
+ defaultValue: TextValue.or(ComputedDefaultValue).optional(),
1711
1723
  options: import_v43.default.array(SelectOption).describe("A list of options"),
1712
1724
  configuration: import_v43.default.object({
1713
1725
  styles: import_v43.default.object({
@@ -1732,7 +1744,7 @@ var BulletList = BaseField.extend({
1732
1744
  });
1733
1745
  var Select = BaseField.extend({
1734
1746
  type: import_v43.default.literal(FieldType.SELECT),
1735
- defaultValue: TextValue.optional(),
1747
+ defaultValue: TextValue.or(ComputedDefaultValue).optional(),
1736
1748
  options: import_v43.default.array(SelectOption).describe("A list of options"),
1737
1749
  noOptionsMessage: TranslationConfig.optional().describe(
1738
1750
  `
@@ -1754,7 +1766,7 @@ var SelectDateRangeOption = import_v43.default.object({
1754
1766
  });
1755
1767
  var SelectDateRangeField = BaseField.extend({
1756
1768
  type: import_v43.default.literal(FieldType.SELECT_DATE_RANGE),
1757
- defaultValue: SelectDateRangeValue.optional(),
1769
+ defaultValue: SelectDateRangeValue.or(ComputedDefaultValue).optional(),
1758
1770
  options: import_v43.default.array(SelectDateRangeOption).describe("A list of options")
1759
1771
  }).meta({
1760
1772
  description: "A date range selection field",
@@ -1771,7 +1783,7 @@ var NameField = BaseField.extend({
1771
1783
  firstname: SerializedUserField.or(NonEmptyTextValue).optional(),
1772
1784
  middlename: SerializedUserField.or(NonEmptyTextValue).optional(),
1773
1785
  surname: SerializedUserField.or(NonEmptyTextValue).optional()
1774
- }).optional(),
1786
+ }).or(ComputedDefaultValue).optional(),
1775
1787
  configuration: import_v43.default.object({
1776
1788
  name: NameConfig.default({
1777
1789
  firstname: { required: true },
@@ -1795,14 +1807,14 @@ var NameField = BaseField.extend({
1795
1807
  id: "NameField"
1796
1808
  });
1797
1809
  var PhoneField = BaseField.extend({
1798
- defaultValue: NonEmptyTextValue.optional(),
1810
+ defaultValue: NonEmptyTextValue.or(ComputedDefaultValue).optional(),
1799
1811
  type: import_v43.default.literal(FieldType.PHONE)
1800
1812
  }).meta({
1801
1813
  description: "A field for entering a phone number",
1802
1814
  id: "PhoneField"
1803
1815
  });
1804
1816
  var IdField = BaseField.extend({
1805
- defaultValue: NonEmptyTextValue.optional(),
1817
+ defaultValue: NonEmptyTextValue.or(ComputedDefaultValue).optional(),
1806
1818
  type: import_v43.default.literal(FieldType.ID)
1807
1819
  }).meta({
1808
1820
  description: "A field for entering an ID",
@@ -1810,14 +1822,14 @@ var IdField = BaseField.extend({
1810
1822
  });
1811
1823
  var Checkbox = BaseField.extend({
1812
1824
  type: import_v43.default.literal(FieldType.CHECKBOX),
1813
- defaultValue: CheckboxFieldValue.default(false)
1825
+ defaultValue: CheckboxFieldValue.or(ComputedDefaultValue).default(false)
1814
1826
  }).meta({
1815
1827
  description: "A boolean checkbox field",
1816
1828
  id: "Checkbox"
1817
1829
  });
1818
1830
  var Country = BaseField.extend({
1819
1831
  type: import_v43.default.literal(FieldType.COUNTRY),
1820
- defaultValue: NonEmptyTextValue.optional(),
1832
+ defaultValue: NonEmptyTextValue.or(ComputedDefaultValue).optional(),
1821
1833
  optionOverrides: import_v43.default.array(SelectOption.omit({ label: true })).optional().describe(
1822
1834
  "Conditionals for specific countries. Countries not listed are always shown and enabled."
1823
1835
  )
@@ -1835,7 +1847,7 @@ var AdministrativeAreas = import_v43.default.enum([
1835
1847
  ]);
1836
1848
  var AdministrativeAreaField = BaseField.extend({
1837
1849
  type: import_v43.default.literal(FieldType.ADMINISTRATIVE_AREA),
1838
- defaultValue: import_v43.default.union([NonEmptyTextValue, SerializedUserField]).optional(),
1850
+ defaultValue: import_v43.default.union([NonEmptyTextValue, SerializedUserField, ComputedDefaultValue]).optional(),
1839
1851
  configuration: import_v43.default.object({
1840
1852
  partOf: FieldReference.optional().describe("Parent location"),
1841
1853
  type: AdministrativeAreas,
@@ -1847,7 +1859,7 @@ var AdministrativeAreaField = BaseField.extend({
1847
1859
  });
1848
1860
  var LocationInput = BaseField.extend({
1849
1861
  type: import_v43.default.literal(FieldType.LOCATION),
1850
- defaultValue: import_v43.default.union([NonEmptyTextValue, SerializedUserField]).optional(),
1862
+ defaultValue: import_v43.default.union([NonEmptyTextValue, SerializedUserField, ComputedDefaultValue]).optional(),
1851
1863
  configuration: import_v43.default.object({
1852
1864
  locationTypes: import_v43.default.array(import_v43.default.string()).optional().describe("Types of the locations that are available for selection."),
1853
1865
  allowedLocations: AllowedLocations
@@ -1859,7 +1871,7 @@ var LocationInput = BaseField.extend({
1859
1871
  var FileUploadWithOptions = BaseField.extend({
1860
1872
  type: import_v43.default.literal(FieldType.FILE_WITH_OPTIONS),
1861
1873
  options: import_v43.default.array(SelectOption).describe("A list of options"),
1862
- defaultValue: FileFieldWithOptionValue.optional(),
1874
+ defaultValue: FileFieldWithOptionValue.or(ComputedDefaultValue).optional(),
1863
1875
  configuration: import_v43.default.object({
1864
1876
  maxFileSize: import_v43.default.number().describe("Maximum file size in bytes").default(DEFAULT_MAX_FILE_SIZE_BYTES),
1865
1877
  maxImageSize: import_v43.default.object({
@@ -1875,12 +1887,12 @@ var FileUploadWithOptions = BaseField.extend({
1875
1887
  });
1876
1888
  var Facility = BaseField.extend({
1877
1889
  type: import_v43.default.literal(FieldType.FACILITY),
1878
- defaultValue: NonEmptyTextValue.optional(),
1890
+ defaultValue: NonEmptyTextValue.or(ComputedDefaultValue).optional(),
1879
1891
  configuration: import_v43.default.object({ allowedLocations: AllowedLocations }).optional()
1880
1892
  }).describe("Input field for a facility");
1881
1893
  var Office = BaseField.extend({
1882
1894
  type: import_v43.default.literal(FieldType.OFFICE),
1883
- defaultValue: NonEmptyTextValue.optional(),
1895
+ defaultValue: NonEmptyTextValue.or(ComputedDefaultValue).optional(),
1884
1896
  configuration: import_v43.default.object({ allowedLocations: AllowedLocations }).optional()
1885
1897
  }).describe("Input field for an office");
1886
1898
  var DefaultAddressFieldValue = DomesticAddressFieldValue.extend({
@@ -1916,7 +1928,7 @@ var Address = BaseField.extend({
1916
1928
  ).optional(),
1917
1929
  allowedLocations: AllowedLocations
1918
1930
  }).optional(),
1919
- defaultValue: DefaultAddressFieldValue.optional()
1931
+ defaultValue: DefaultAddressFieldValue.or(ComputedDefaultValue).optional()
1920
1932
  }).meta({
1921
1933
  description: "Address input field \u2013 a combination of location and text fields",
1922
1934
  id: "Address"
@@ -1963,7 +1975,7 @@ var ButtonConfiguration = import_v43.default.object({
1963
1975
  });
1964
1976
  var ButtonField = BaseField.extend({
1965
1977
  type: import_v43.default.literal(FieldType.BUTTON),
1966
- defaultValue: ButtonFieldValue.optional(),
1978
+ defaultValue: ButtonFieldValue.or(ComputedDefaultValue).optional(),
1967
1979
  configuration: ButtonConfiguration
1968
1980
  }).meta({
1969
1981
  description: "A generic button that can be used to trigger an action",
@@ -1991,7 +2003,7 @@ var AlphaPrintButton = BaseField.extend({
1991
2003
  });
1992
2004
  var HttpField = BaseField.extend({
1993
2005
  type: import_v43.default.literal(FieldType.HTTP),
1994
- defaultValue: HttpFieldValue.optional(),
2006
+ defaultValue: HttpFieldValue.or(ComputedDefaultValue).optional(),
1995
2007
  configuration: import_v43.default.object({
1996
2008
  trigger: FieldReference.optional().describe(
1997
2009
  "Reference to the field that triggers the HTTP request when its value changes. If not provided, the HTTP request is triggered once on component mount."
@@ -2077,7 +2089,7 @@ var LinkButtonField = BaseField.extend({
2077
2089
  });
2078
2090
  var VerificationStatus = BaseField.extend({
2079
2091
  type: import_v43.default.literal(FieldType.VERIFICATION_STATUS),
2080
- defaultValue: VerificationStatusValue.optional(),
2092
+ defaultValue: VerificationStatusValue.or(ComputedDefaultValue).optional(),
2081
2093
  configuration: import_v43.default.object({
2082
2094
  status: TranslationConfig.describe("Text to display on the status pill."),
2083
2095
  description: TranslationConfig.describe(
@@ -2099,7 +2111,7 @@ var QueryParamReaderField = BaseField.extend({
2099
2111
  });
2100
2112
  var QrReaderField = BaseField.extend({
2101
2113
  type: import_v43.default.literal(FieldType.QR_READER),
2102
- defaultValue: QrReaderFieldValue.optional(),
2114
+ defaultValue: QrReaderFieldValue.or(ComputedDefaultValue).optional(),
2103
2115
  configuration: import_v43.default.object({
2104
2116
  validator: import_v43.default.any().meta({
2105
2117
  description: "JSON Schema to validate the scanned QR code data against before populating the form fields.",
@@ -2112,7 +2124,7 @@ var QrReaderField = BaseField.extend({
2112
2124
  });
2113
2125
  var IdReaderField = BaseField.extend({
2114
2126
  type: import_v43.default.literal(FieldType.ID_READER),
2115
- defaultValue: IdReaderFieldValue.optional(),
2127
+ defaultValue: IdReaderFieldValue.or(ComputedDefaultValue).optional(),
2116
2128
  methods: import_v43.default.array(
2117
2129
  import_v43.default.union([QrReaderField, LinkButtonField]).describe("Methods for reading an ID")
2118
2130
  )
@@ -2273,6 +2285,7 @@ var ClientConfig = z20.object({
2273
2285
  COUNTRY: z20.string(),
2274
2286
  LANGUAGES: z20.array(z20.string()),
2275
2287
  SENTRY: z20.string().optional(),
2288
+ LOGIN_URL: z20.string().optional(),
2276
2289
  REGISTER_BACKGROUND: BackgroundConfig,
2277
2290
  DASHBOARDS: z20.array(
2278
2291
  z20.object({
package/dist/cli.js CHANGED
@@ -2382,14 +2382,20 @@ var encodeScope = (scope) => {
2382
2382
  encode: false
2383
2383
  });
2384
2384
  };
2385
+ var decodedScopeCache = /* @__PURE__ */ new Map();
2385
2386
  var decodeScope = (query) => {
2387
+ if (decodedScopeCache.has(query)) {
2388
+ return decodedScopeCache.get(query);
2389
+ }
2386
2390
  const scope = qs.parse(query, {
2387
2391
  ignoreQueryPrefix: true,
2388
2392
  comma: true,
2389
2393
  allowDots: true
2390
2394
  });
2391
2395
  const unflattenedScope = unflattenScope(scope);
2392
- return Scope2.safeParse(unflattenedScope)?.data;
2396
+ const result = Scope2.safeParse(unflattenedScope)?.data;
2397
+ decodedScopeCache.set(query, result);
2398
+ return result;
2393
2399
  };
2394
2400
  var DEFAULT_SCOPE_OPTIONS = {
2395
2401
  placeOfEvent: JurisdictionFilter.enum.all,