@opencrvs/toolkit 2.0.0-rc.fdc585a → 2.0.0-rc.ff04b30

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 (44) hide show
  1. package/create-countryconfig/index.js +73 -0
  2. package/create-countryconfig/package.json +11 -0
  3. package/dist/application-config/index.js +27 -28
  4. package/dist/cli.js +392 -128
  5. package/dist/commons/api/router.d.ts +3301 -247
  6. package/dist/commons/conditionals/validate.d.ts +1 -0
  7. package/dist/commons/events/ActionInput.d.ts +108 -0
  8. package/dist/commons/events/Draft.d.ts +3 -0
  9. package/dist/commons/events/EventIndex.d.ts +0 -3
  10. package/dist/commons/events/EventMetadata.d.ts +0 -7
  11. package/dist/commons/events/WorkqueueConfig.d.ts +146 -146
  12. package/dist/commons/events/locations.d.ts +21 -0
  13. package/dist/commons/events/mocks.test.utils.d.ts +19 -0
  14. package/dist/commons/events/scopes.d.ts +24 -1
  15. package/dist/commons/events/state/index.d.ts +0 -4
  16. package/dist/commons/events/state/utils.d.ts +0 -2
  17. package/dist/commons/events/utils.d.ts +1 -1
  18. package/dist/conditionals/index.js +3 -1
  19. package/dist/events/index.js +109 -76
  20. package/dist/migrations/v2.0/checkout-upstream-files.d.ts +1 -1
  21. package/dist/migrations/v2.0/checkout-upstream-files.d.ts.map +1 -1
  22. package/dist/migrations/v2.0/checkout-upstream-files.js +1 -2
  23. package/dist/migrations/v2.0/delete-infrastructure-directory.d.ts +9 -1
  24. package/dist/migrations/v2.0/delete-infrastructure-directory.d.ts.map +1 -1
  25. package/dist/migrations/v2.0/delete-infrastructure-directory.js +66 -20
  26. package/dist/migrations/v2.0/fix-accept-requested-registration-function-type.d.ts +3 -0
  27. package/dist/migrations/v2.0/fix-accept-requested-registration-function-type.d.ts.map +1 -0
  28. package/dist/migrations/v2.0/fix-accept-requested-registration-function-type.js +110 -0
  29. package/dist/migrations/v2.0/index.d.ts +5 -3
  30. package/dist/migrations/v2.0/index.d.ts.map +1 -1
  31. package/dist/migrations/v2.0/index.js +390 -126
  32. package/dist/migrations/v2.0/merge-infrastructure-directory.d.ts +11 -1
  33. package/dist/migrations/v2.0/merge-infrastructure-directory.d.ts.map +1 -1
  34. package/dist/migrations/v2.0/merge-infrastructure-directory.js +17 -16
  35. package/dist/migrations/v2.0/migrate-scopes.d.ts.map +1 -1
  36. package/dist/migrations/v2.0/migrate-scopes.js +54 -30
  37. package/dist/migrations/v2.0/migrate-workqueue-configs.d.ts.map +1 -1
  38. package/dist/migrations/v2.0/migrate-workqueue-configs.js +140 -59
  39. package/dist/notification/index.js +41 -46
  40. package/dist/scopes/index.js +3 -1
  41. package/opencrvs-toolkit-2.0.0-rc.ff04b30.tgz +0 -0
  42. package/package.json +1 -1
  43. package/tsconfig.tsbuildinfo +1 -1
  44. package/opencrvs-toolkit-2.0.0-rc.fdc585a.tgz +0 -0
@@ -0,0 +1,73 @@
1
+ #!/usr/bin/env node
2
+
3
+ /*
4
+ * This Source Code Form is subject to the terms of the Mozilla Public
5
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ * file, You can obtain one at https://mozilla.org/MPL/2.0/.
7
+ *
8
+ * OpenCRVS is also distributed under the terms of the Civil Registration
9
+ * & Healthcare Disclaimer located at http://opencrvs.org/license.
10
+ *
11
+ * Copyright (C) The OpenCRVS Authors located at https://github.com/opencrvs/opencrvs-core/blob/master/AUTHORS.
12
+ */
13
+
14
+ const { execSync } = require('child_process')
15
+ const path = require('path')
16
+ const fs = require('fs')
17
+
18
+ const REPO_URL = 'https://github.com/opencrvs/opencrvs-countryconfig.git'
19
+
20
+ const projectName = process.argv[2]
21
+
22
+ if (!projectName) {
23
+ console.error(
24
+ 'Please specify a project name:\n\n npm create @opencrvs/countryconfig <project-name>\n'
25
+ )
26
+ process.exit(1)
27
+ }
28
+
29
+ const targetDir = path.resolve(process.cwd(), projectName)
30
+
31
+ if (fs.existsSync(targetDir)) {
32
+ console.error(`Error: Directory "${projectName}" already exists.`)
33
+ process.exit(1)
34
+ }
35
+
36
+ console.log(`\nScaffolding OpenCRVS country config in ./${projectName}...\n`)
37
+
38
+ try {
39
+ execSync(`git clone --depth 1 ${REPO_URL} ${projectName}`, {
40
+ stdio: 'inherit'
41
+ })
42
+ } catch (err) {
43
+ console.error('Failed to clone the repository:', err.message)
44
+ process.exit(1)
45
+ }
46
+
47
+ try {
48
+ fs.rmSync(path.join(targetDir, '.git'), { recursive: true, force: true })
49
+ } catch (err) {
50
+ console.error('Failed to remove .git directory:', err.message)
51
+ process.exit(1)
52
+ }
53
+
54
+ const pkgPath = path.join(targetDir, 'package.json')
55
+ if (fs.existsSync(pkgPath)) {
56
+ try {
57
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, 'utf-8'))
58
+ pkg.name = projectName
59
+ fs.writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n')
60
+ } catch (err) {
61
+ console.error('Failed to update package.json:', err.message)
62
+ process.exit(1)
63
+ }
64
+ } else {
65
+ console.warn(
66
+ `Warning: No package.json found in the cloned repository. Project name was not updated.`
67
+ )
68
+ }
69
+
70
+ console.log(`\nDone! To get started:\n`)
71
+ console.log(` cd ${projectName}`)
72
+ console.log(` git init`)
73
+ console.log(` npm install\n`)
@@ -0,0 +1,11 @@
1
+ {
2
+ "name": "@opencrvs/create-countryconfig",
3
+ "version": "1.0.0",
4
+ "description": "Scaffold a new OpenCRVS country configuration",
5
+ "bin": {
6
+ "create-countryconfig": "./index.js"
7
+ },
8
+ "files": ["index.js"],
9
+ "keywords": ["opencrvs", "countryconfig", "create"],
10
+ "license": "MPL-2.0"
11
+ }
@@ -75,7 +75,10 @@ var ActionConditional = z.discriminatedUnion("type", [
75
75
  ShowConditional,
76
76
  // Action can be shown to the user in the list but as disabled
77
77
  EnableConditional
78
- ]);
78
+ ]).meta({
79
+ description: "Action conditional configuration",
80
+ id: "ActionConditional"
81
+ });
79
82
  var DisplayOnReviewConditional = z.object({
80
83
  type: z.literal(ConditionalType.DISPLAY_ON_REVIEW),
81
84
  conditional: Conditional
@@ -418,28 +421,20 @@ function schemaPriority(schema) {
418
421
  return idx === -1 ? 9999 : idx;
419
422
  }
420
423
  function safeUnion(schemas) {
424
+ const sortedSchemas = [...schemas].sort(
425
+ (a, b) => schemaPriority(a) - schemaPriority(b)
426
+ );
421
427
  return z7.any().superRefine((val, ctx) => {
422
- const successful = schemas.filter((s) => s.safeParse(val).success);
423
- if (successful.length === 1) {
424
- return;
425
- }
426
- if (successful.length === 0) {
427
- ctx.addIssue({
428
- code: "invalid_type",
429
- expected: "custom",
430
- message: "Value does not match any schema"
431
- });
432
- return;
433
- }
434
- successful.sort((a, b) => schemaPriority(a) - schemaPriority(b));
435
- const best = successful[0];
436
- if (!best.safeParse(val).success) {
437
- ctx.addIssue({
438
- expected: "custom",
439
- code: "invalid_type",
440
- message: "Value did not match the best schema"
441
- });
428
+ for (const schema of sortedSchemas) {
429
+ if (schema.safeParse(val).success) {
430
+ return;
431
+ }
442
432
  }
433
+ ctx.addIssue({
434
+ code: "invalid_type",
435
+ expected: "custom",
436
+ message: "Value does not match any schema"
437
+ });
443
438
  }).meta({
444
439
  description: "Value that matches exactly one of the possible schema types (TextValue, DateValue, DateRangeFieldValue). The best matching schema is chosen by priority."
445
440
  });
@@ -839,7 +834,9 @@ var ScopeType = z11.enum([
839
834
  var EncodedScope = z11.string().brand("EncodedScope");
840
835
  var DEFAULT_SCOPE_OPTIONS = {
841
836
  placeOfEvent: JurisdictionFilter.enum.all,
842
- accessLevel: JurisdictionFilter.enum.all
837
+ accessLevel: JurisdictionFilter.enum.all,
838
+ registeredIn: JurisdictionFilter.enum.all,
839
+ declaredIn: JurisdictionFilter.enum.all
843
840
  };
844
841
 
845
842
  // ../commons/src/authentication.ts
@@ -1085,6 +1082,9 @@ var FlagConfig = z14.object({
1085
1082
  "Indicates if this flag expects an action to be performed to be cleared."
1086
1083
  ),
1087
1084
  label: TranslationConfig.describe("Human readable label of the flag.")
1085
+ }).meta({
1086
+ description: "Flag configuration",
1087
+ id: "FlagConfig"
1088
1088
  });
1089
1089
  var ActionFlagConfig = z14.object({
1090
1090
  id: Flag,
@@ -1092,6 +1092,9 @@ var ActionFlagConfig = z14.object({
1092
1092
  conditional: Conditional.optional().describe(
1093
1093
  "When conditional is met, the operation is performed on the flag. If not provided, the operation is performed unconditionally."
1094
1094
  )
1095
+ }).meta({
1096
+ description: "Action flag configuration",
1097
+ id: "ActionFlagConfig"
1095
1098
  });
1096
1099
 
1097
1100
  // ../commons/src/events/EventMetadata.ts
@@ -1113,8 +1116,7 @@ var ActionCreationMetadata = z15.object({
1113
1116
  ),
1114
1117
  createdByUserType: z15.enum(["user", "system"]).nullish().describe("Whether the user is a normal user or a system."),
1115
1118
  acceptedAt: z15.iso.datetime().describe("Timestamp when the action request was accepted."),
1116
- createdByRole: z15.string().optional().describe("Role of the user at the time of action request creation."),
1117
- createdBySignature: z15.string().nullish().describe("Signature of the user who created the action request.")
1119
+ createdByRole: z15.string().optional().describe("Role of the user at the time of action request creation.")
1118
1120
  });
1119
1121
  var RegistrationCreationMetadata = ActionCreationMetadata.extend({
1120
1122
  registrationNumber: z15.string().describe(
@@ -1142,9 +1144,6 @@ var EventMetadata = z15.object({
1142
1144
  createdAtLocation: UUID.nullish().describe(
1143
1145
  "Location of the user who created the event."
1144
1146
  ),
1145
- createdBySignature: DocumentPath.nullish().describe(
1146
- "Signature of the user who created the event."
1147
- ),
1148
1147
  updatedAtLocation: UUID.nullish().describe(
1149
1148
  "Location of the user who last changed the status."
1150
1149
  ),
@@ -1408,7 +1407,7 @@ var FieldId = import_v43.default.string().superRefine((val, ctx) => {
1408
1407
  }
1409
1408
  }).describe("Unique identifier for the field");
1410
1409
  var FieldReference = import_v43.default.object({
1411
- $$field: FieldId,
1410
+ $$field: FieldId.describe("Id of the field to reference"),
1412
1411
  $$subfield: import_v43.default.array(import_v43.default.string()).optional().default([]).describe(
1413
1412
  'If the FieldValue is an object, subfield can be used to refer to e.g. `["foo", "bar"]` in `{ foo: { bar: 3 } }`'
1414
1413
  )