@opencrvs/toolkit 1.8.0-rc.f97f8f2 → 1.8.0-rc.f988670

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/dist/commons/api/router.d.ts +10613 -8753
  2. package/dist/commons/conditionals/conditionals.d.ts +7 -14
  3. package/dist/commons/conditionals/validate.d.ts +14 -0
  4. package/dist/commons/events/ActionConfig.d.ts +82300 -42816
  5. package/dist/commons/events/ActionDocument.d.ts +3996 -1262
  6. package/dist/commons/events/ActionInput.d.ts +3139 -967
  7. package/dist/commons/events/ActionType.d.ts +4 -0
  8. package/dist/commons/events/AdvancedSearchConfig.d.ts +981 -47
  9. package/dist/commons/events/CompositeFieldValue.d.ts +37 -9
  10. package/dist/commons/events/Constants.d.ts +3 -0
  11. package/dist/commons/events/CountryConfigQueryInput.d.ts +3069 -443
  12. package/dist/commons/events/CreatedAtLocation.d.ts +2 -0
  13. package/dist/commons/events/Draft.d.ts +273 -95
  14. package/dist/commons/events/EventConfig.d.ts +33357 -14451
  15. package/dist/commons/events/EventDocument.d.ts +2554 -848
  16. package/dist/commons/events/EventIndex.d.ts +1281 -495
  17. package/dist/commons/events/EventInput.d.ts +0 -13
  18. package/dist/commons/events/EventMetadata.d.ts +126 -92
  19. package/dist/commons/events/FieldConfig.d.ts +4564 -1588
  20. package/dist/commons/events/FieldType.d.ts +10 -1
  21. package/dist/commons/events/FieldTypeMapping.d.ts +149 -75
  22. package/dist/commons/events/FieldValue.d.ts +87 -20
  23. package/dist/commons/events/FormConfig.d.ts +22178 -8396
  24. package/dist/commons/events/PageConfig.d.ts +5525 -2087
  25. package/dist/commons/events/SummaryConfig.d.ts +0 -5
  26. package/dist/commons/events/User.d.ts +6 -3
  27. package/dist/commons/events/WorkqueueColumnConfig.d.ts +18 -7
  28. package/dist/commons/events/WorkqueueConfig.d.ts +6406 -1001
  29. package/dist/commons/events/defineConfig.d.ts +3797 -870
  30. package/dist/commons/events/event.d.ts +41 -14
  31. package/dist/commons/events/field.d.ts +55 -15
  32. package/dist/commons/events/index.d.ts +2 -0
  33. package/dist/commons/events/scopes.d.ts +21 -3
  34. package/dist/commons/events/test.utils.d.ts +208 -54
  35. package/dist/commons/events/transactions.d.ts +1 -1
  36. package/dist/commons/events/utils.d.ts +14039 -1170
  37. package/dist/conditionals/index.js +69 -62
  38. package/dist/events/index.js +3836 -1956
  39. package/dist/scopes/index.d.ts +147 -5
  40. package/dist/scopes/index.js +133 -43
  41. package/package.json +3 -3
  42. package/tsconfig.json +1 -1
  43. package/dist/commons/conditionals/conditionals.test.d.ts +0 -2
  44. package/dist/commons/conditionals/validate-address.test.d.ts +0 -2
  45. package/dist/commons/conditionals/validate.test.d.ts +0 -2
  46. package/dist/commons/events/utils.test.d.ts +0 -2
@@ -1,4 +1,5 @@
1
1
  import { z } from 'zod';
2
+ import { SearchScopeAccessLevels } from './events';
2
3
  export declare const SCOPES: {
3
4
  readonly NATLSYSADMIN: "natlsysadmin";
4
5
  readonly BYPASSRATELIMIT: "bypassratelimit";
@@ -19,6 +20,7 @@ export declare const SCOPES: {
19
20
  * @TODO This is a temporary scope to be used for V2 Events custom events declaration
20
21
  */
21
22
  readonly RECORD_DECLARE: "record.declare-birth";
23
+ readonly RECORD_IMPORT: "record.import";
22
24
  readonly RECORD_DECLARE_BIRTH: "record.declare-birth";
23
25
  readonly RECORD_DECLARE_BIRTH_MY_JURISDICTION: "record.declare-birth:my-jurisdiction";
24
26
  readonly RECORD_DECLARE_DEATH: "record.declare-death";
@@ -84,8 +86,79 @@ export declare const SCOPES: {
84
86
  readonly CONFIG_UPDATE_ALL: "config.update:all";
85
87
  readonly USER_DATA_SEEDING: "user.data-seeding";
86
88
  };
87
- declare const LiteralScopes: z.ZodUnion<[z.ZodLiteral<"natlsysadmin">, z.ZodLiteral<"bypassratelimit">, z.ZodLiteral<"declare">, z.ZodLiteral<"register">, z.ZodLiteral<"validate">, z.ZodLiteral<"demo">, z.ZodLiteral<"certify">, z.ZodLiteral<"performance">, z.ZodLiteral<"sysadmin">, z.ZodLiteral<"teams">, z.ZodLiteral<"config">, z.ZodLiteral<"webhook">, z.ZodLiteral<"nationalId">, z.ZodLiteral<"notification-api">, z.ZodLiteral<"recordsearch">, z.ZodLiteral<"record.declare-birth">, z.ZodLiteral<"record.declare-birth:my-jurisdiction">, z.ZodLiteral<"record.declare-death">, z.ZodLiteral<"record.declare-death:my-jurisdiction">, z.ZodLiteral<"record.declare-marriage">, z.ZodLiteral<"record.declare-marriage:my-jurisdiction">, z.ZodLiteral<"record.declaration-submit-incomplete">, z.ZodLiteral<"record.declaration-submit-for-review">, z.ZodLiteral<"record.unassign-others">, z.ZodLiteral<"record.declaration-submit-for-approval">, z.ZodLiteral<"record.declaration-submit-for-updates">, z.ZodLiteral<"record.declaration-edit">, z.ZodLiteral<"record.review-duplicates">, z.ZodLiteral<"record.declaration-archive">, z.ZodLiteral<"record.declaration-reinstate">, z.ZodLiteral<"record.register">, z.ZodLiteral<"record.export-records">, z.ZodLiteral<"record.declaration-print">, z.ZodLiteral<"record.declaration-print-supporting-documents">, z.ZodLiteral<"record.registration-print">, z.ZodLiteral<"record.registration-print&issue-certified-copies">, z.ZodLiteral<"record.registration-print-certified-copies">, z.ZodLiteral<"record.registration-bulk-print-certified-copies">, z.ZodLiteral<"record.registration-verify-certified-copies">, z.ZodLiteral<"record.registration-request-correction">, z.ZodLiteral<"record.registration-correct">, z.ZodLiteral<"record.registration-request-revocation">, z.ZodLiteral<"record.registration-revoke">, z.ZodLiteral<"record.registration-request-reinstatement">, z.ZodLiteral<"record.registration-reinstate">, z.ZodLiteral<"record.confirm-registration">, z.ZodLiteral<"record.reject-registration">, z.ZodLiteral<"search.birth:my-jurisdiction">, z.ZodLiteral<"search.birth">, z.ZodLiteral<"search.death:my-jurisdiction">, z.ZodLiteral<"search.death">, z.ZodLiteral<"search.marriage:my-jurisdiction">, z.ZodLiteral<"search.marriage">, z.ZodLiteral<"record.read">, z.ZodLiteral<"record.read-audit">, z.ZodLiteral<"record.read-comments">, z.ZodLiteral<"record.create-comments">, z.ZodLiteral<"profile.update">, z.ZodLiteral<"profile.electronic-signature">, z.ZodLiteral<"performance.read">, z.ZodLiteral<"performance.read-dashboards">, z.ZodLiteral<"performance.vital-statistics-export">, z.ZodLiteral<"organisation.read-locations:all">, z.ZodLiteral<"organisation.read-locations:my-office">, z.ZodLiteral<"organisation.read-locations:my-jurisdiction">, z.ZodLiteral<"user.read:all">, z.ZodLiteral<"user.read:my-office">, z.ZodLiteral<"user.read:my-jurisdiction">, z.ZodLiteral<"user.read:only-my-audit">, z.ZodLiteral<"user.create:all">, z.ZodLiteral<"user.create:my-jurisdiction">, z.ZodLiteral<"user.update:all">, z.ZodLiteral<"user.update:my-jurisdiction">, z.ZodLiteral<"config.update:all">, z.ZodLiteral<"user.data-seeding">]>;
88
- declare const ConfigurableScopes: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
89
+ export declare const SearchScopes: z.ZodUnion<[z.ZodLiteral<"search.birth:my-jurisdiction">, z.ZodLiteral<"search.birth">, z.ZodLiteral<"search.death:my-jurisdiction">, z.ZodLiteral<"search.death">, z.ZodLiteral<"search.marriage:my-jurisdiction">, z.ZodLiteral<"search.marriage">]>;
90
+ declare const LiteralScopes: z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"natlsysadmin">, z.ZodLiteral<"bypassratelimit">, z.ZodLiteral<"declare">, z.ZodLiteral<"register">, z.ZodLiteral<"validate">, z.ZodLiteral<"demo">, z.ZodLiteral<"certify">, z.ZodLiteral<"performance">, z.ZodLiteral<"sysadmin">, z.ZodLiteral<"teams">, z.ZodLiteral<"config">]>, z.ZodUnion<[z.ZodLiteral<"webhook">, z.ZodLiteral<"nationalId">, z.ZodLiteral<"notification-api">, z.ZodLiteral<"recordsearch">]>, z.ZodLiteral<"record.unassign-others">, z.ZodUnion<[z.ZodLiteral<"record.declare-birth">, z.ZodLiteral<"record.import">, z.ZodLiteral<"record.declare-birth">, z.ZodLiteral<"record.declare-birth:my-jurisdiction">, z.ZodLiteral<"record.declare-death">, z.ZodLiteral<"record.declare-death:my-jurisdiction">, z.ZodLiteral<"record.declare-marriage">, z.ZodLiteral<"record.declare-marriage:my-jurisdiction">, z.ZodLiteral<"record.declaration-submit-incomplete">, z.ZodLiteral<"record.declaration-submit-for-review">]>, z.ZodUnion<[z.ZodLiteral<"record.declaration-submit-for-approval">, z.ZodLiteral<"record.declaration-submit-for-updates">, z.ZodLiteral<"record.declaration-edit">, z.ZodLiteral<"record.review-duplicates">, z.ZodLiteral<"record.declaration-archive">, z.ZodLiteral<"record.declaration-reinstate">]>, z.ZodLiteral<"record.register">, z.ZodUnion<[z.ZodLiteral<"record.export-records">, z.ZodLiteral<"record.declaration-print">, z.ZodLiteral<"record.declaration-print-supporting-documents">, z.ZodLiteral<"record.registration-print">, z.ZodLiteral<"record.registration-print&issue-certified-copies">, z.ZodLiteral<"record.registration-print-certified-copies">, z.ZodLiteral<"record.registration-bulk-print-certified-copies">, z.ZodLiteral<"record.registration-verify-certified-copies">]>, z.ZodUnion<[z.ZodLiteral<"record.registration-request-correction">, z.ZodLiteral<"record.registration-correct">, z.ZodLiteral<"record.registration-request-revocation">, z.ZodLiteral<"record.registration-revoke">, z.ZodLiteral<"record.registration-request-reinstatement">, z.ZodLiteral<"record.registration-reinstate">, z.ZodLiteral<"record.confirm-registration">, z.ZodLiteral<"record.reject-registration">]>, z.ZodUnion<[z.ZodLiteral<"search.birth:my-jurisdiction">, z.ZodLiteral<"search.birth">, z.ZodLiteral<"search.death:my-jurisdiction">, z.ZodLiteral<"search.death">, z.ZodLiteral<"search.marriage:my-jurisdiction">, z.ZodLiteral<"search.marriage">]>, z.ZodUnion<[z.ZodLiteral<"record.read">, z.ZodLiteral<"record.read-audit">, z.ZodLiteral<"record.read-comments">, z.ZodLiteral<"record.create-comments">]>, z.ZodUnion<[z.ZodLiteral<"profile.update">, z.ZodLiteral<"profile.electronic-signature">]>, z.ZodUnion<[z.ZodLiteral<"performance.read">, z.ZodLiteral<"performance.read-dashboards">, z.ZodLiteral<"performance.vital-statistics-export">]>, z.ZodUnion<[z.ZodLiteral<"organisation.read-locations:all">, z.ZodLiteral<"organisation.read-locations:my-office">, z.ZodLiteral<"organisation.read-locations:my-jurisdiction">]>, z.ZodUnion<[z.ZodLiteral<"user.read:all">, z.ZodLiteral<"user.read:my-office">, z.ZodLiteral<"user.read:my-jurisdiction">, z.ZodLiteral<"user.read:only-my-audit">, z.ZodLiteral<"user.create:all">, z.ZodLiteral<"user.create:my-jurisdiction">, z.ZodLiteral<"user.update:all">, z.ZodLiteral<"user.update:my-jurisdiction">]>, z.ZodLiteral<"config.update:all">, z.ZodLiteral<"user.data-seeding">]>;
91
+ declare const NotifyRecordScope: z.ZodObject<{
92
+ type: z.ZodLiteral<"record.notify">;
93
+ options: z.ZodObject<{
94
+ event: z.ZodArray<z.ZodString, "many">;
95
+ }, "strip", z.ZodTypeAny, {
96
+ event: string[];
97
+ }, {
98
+ event: string[];
99
+ }>;
100
+ }, "strip", z.ZodTypeAny, {
101
+ type: "record.notify";
102
+ options: {
103
+ event: string[];
104
+ };
105
+ }, {
106
+ type: "record.notify";
107
+ options: {
108
+ event: string[];
109
+ };
110
+ }>;
111
+ declare const SearchScope: z.ZodObject<{
112
+ type: z.ZodLiteral<"search">;
113
+ options: z.ZodObject<{
114
+ event: z.ZodArray<z.ZodString, "many">;
115
+ access: z.ZodArray<z.ZodEnum<["my-jurisdiction", "all"]>, "many">;
116
+ }, "strip", z.ZodTypeAny, {
117
+ event: string[];
118
+ access: ("my-jurisdiction" | "all")[];
119
+ }, {
120
+ event: string[];
121
+ access: ("my-jurisdiction" | "all")[];
122
+ }>;
123
+ }, "strip", z.ZodTypeAny, {
124
+ type: "search";
125
+ options: {
126
+ event: string[];
127
+ access: ("my-jurisdiction" | "all")[];
128
+ };
129
+ }, {
130
+ type: "search";
131
+ options: {
132
+ event: string[];
133
+ access: ("my-jurisdiction" | "all")[];
134
+ };
135
+ }>;
136
+ export type SearchScope = z.infer<typeof SearchScope>;
137
+ declare const ConfigurableRawScopes: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
138
+ type: z.ZodLiteral<"search">;
139
+ options: z.ZodObject<{
140
+ event: z.ZodArray<z.ZodString, "many">;
141
+ access: z.ZodArray<z.ZodEnum<["my-jurisdiction", "all"]>, "many">;
142
+ }, "strip", z.ZodTypeAny, {
143
+ event: string[];
144
+ access: ("my-jurisdiction" | "all")[];
145
+ }, {
146
+ event: string[];
147
+ access: ("my-jurisdiction" | "all")[];
148
+ }>;
149
+ }, "strip", z.ZodTypeAny, {
150
+ type: "search";
151
+ options: {
152
+ event: string[];
153
+ access: ("my-jurisdiction" | "all")[];
154
+ };
155
+ }, {
156
+ type: "search";
157
+ options: {
158
+ event: string[];
159
+ access: ("my-jurisdiction" | "all")[];
160
+ };
161
+ }>, z.ZodObject<{
89
162
  type: z.ZodLiteral<"user.create">;
90
163
  options: z.ZodObject<{
91
164
  role: z.ZodArray<z.ZodString, "many">;
@@ -142,9 +215,36 @@ declare const ConfigurableScopes: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
142
215
  options: {
143
216
  id: string[];
144
217
  };
218
+ }>, z.ZodObject<{
219
+ type: z.ZodLiteral<"record.notify">;
220
+ options: z.ZodObject<{
221
+ event: z.ZodArray<z.ZodString, "many">;
222
+ }, "strip", z.ZodTypeAny, {
223
+ event: string[];
224
+ }, {
225
+ event: string[];
226
+ }>;
227
+ }, "strip", z.ZodTypeAny, {
228
+ type: "record.notify";
229
+ options: {
230
+ event: string[];
231
+ };
232
+ }, {
233
+ type: "record.notify";
234
+ options: {
235
+ event: string[];
236
+ };
145
237
  }>]>;
146
- type ConfigurableScopes = z.infer<typeof ConfigurableScopes>;
147
- export declare function findScope<T extends ConfigurableScopes['type']>(scopes: string[], scopeType: T): Extract<{
238
+ type ConfigurableRawScopes = z.infer<typeof ConfigurableRawScopes>;
239
+ export type ConfigurableScopeType = ConfigurableRawScopes['type'];
240
+ type FlattenedSearchScope = {
241
+ type: 'search';
242
+ options: Record<string, SearchScopeAccessLevels>;
243
+ };
244
+ export type ConfigurableScopes = Exclude<ConfigurableRawScopes, {
245
+ type: 'search';
246
+ }> | FlattenedSearchScope;
247
+ export declare function findScope<T extends ConfigurableScopeType>(scopes: string[], scopeType: T): Extract<{
148
248
  type: "user.create";
149
249
  options: {
150
250
  role: string[];
@@ -165,8 +265,31 @@ export declare function findScope<T extends ConfigurableScopes['type']>(scopes:
165
265
  };
166
266
  }, {
167
267
  type: T;
268
+ }> | Extract<{
269
+ type: "record.notify";
270
+ options: {
271
+ event: string[];
272
+ };
273
+ }, {
274
+ type: T;
275
+ }> | Extract<FlattenedSearchScope, {
276
+ type: T;
168
277
  }> | undefined;
278
+ /**
279
+ * Parses a configurable scope string into a ConfigurableRawScopes object.
280
+ * @param {string} scope - The scope string to parse
281
+ * @returns {ConfigurableRawScopes | undefined} The parsed scope object if valid, undefined otherwise
282
+ * @example
283
+ * parseScope("user.create[role=field-agent|registration-agent]")
284
+ * // Returns: { type: "user.create", options: { role: ["field-agent", "registration-agent"] } }
285
+ */
169
286
  export declare function parseScope(scope: string): {
287
+ type: "search";
288
+ options: {
289
+ event: string[];
290
+ access: ("my-jurisdiction" | "all")[];
291
+ };
292
+ } | {
170
293
  type: "user.create";
171
294
  options: {
172
295
  role: string[];
@@ -182,11 +305,30 @@ export declare function parseScope(scope: string): {
182
305
  id: string[];
183
306
  };
184
307
  } | {
185
- type: "natlsysadmin" | "bypassratelimit" | "declare" | "register" | "validate" | "demo" | "certify" | "performance" | "sysadmin" | "teams" | "config" | "webhook" | "nationalId" | "notification-api" | "recordsearch" | "record.declare-birth" | "record.declare-birth:my-jurisdiction" | "record.declare-death" | "record.declare-death:my-jurisdiction" | "record.declare-marriage" | "record.declare-marriage:my-jurisdiction" | "record.declaration-submit-incomplete" | "record.declaration-submit-for-review" | "record.unassign-others" | "record.declaration-submit-for-approval" | "record.declaration-submit-for-updates" | "record.declaration-edit" | "record.review-duplicates" | "record.declaration-archive" | "record.declaration-reinstate" | "record.register" | "record.export-records" | "record.declaration-print" | "record.declaration-print-supporting-documents" | "record.registration-print" | "record.registration-print&issue-certified-copies" | "record.registration-print-certified-copies" | "record.registration-bulk-print-certified-copies" | "record.registration-verify-certified-copies" | "record.registration-request-correction" | "record.registration-correct" | "record.registration-request-revocation" | "record.registration-revoke" | "record.registration-request-reinstatement" | "record.registration-reinstate" | "record.confirm-registration" | "record.reject-registration" | "search.birth:my-jurisdiction" | "search.birth" | "search.death:my-jurisdiction" | "search.death" | "search.marriage:my-jurisdiction" | "search.marriage" | "record.read" | "record.read-audit" | "record.read-comments" | "record.create-comments" | "profile.update" | "profile.electronic-signature" | "performance.read" | "performance.read-dashboards" | "performance.vital-statistics-export" | "organisation.read-locations:all" | "organisation.read-locations:my-office" | "organisation.read-locations:my-jurisdiction" | "user.read:all" | "user.read:my-office" | "user.read:my-jurisdiction" | "user.read:only-my-audit" | "user.create:all" | "user.create:my-jurisdiction" | "user.update:all" | "user.update:my-jurisdiction" | "config.update:all" | "user.data-seeding";
308
+ type: "record.notify";
309
+ options: {
310
+ event: string[];
311
+ };
312
+ } | {
313
+ type: "natlsysadmin" | "bypassratelimit" | "declare" | "register" | "validate" | "demo" | "certify" | "performance" | "sysadmin" | "teams" | "config" | "webhook" | "nationalId" | "notification-api" | "recordsearch" | "record.declare-birth" | "record.import" | "record.declare-birth:my-jurisdiction" | "record.declare-death" | "record.declare-death:my-jurisdiction" | "record.declare-marriage" | "record.declare-marriage:my-jurisdiction" | "record.declaration-submit-incomplete" | "record.declaration-submit-for-review" | "record.unassign-others" | "record.declaration-submit-for-approval" | "record.declaration-submit-for-updates" | "record.declaration-edit" | "record.review-duplicates" | "record.declaration-archive" | "record.declaration-reinstate" | "record.register" | "record.export-records" | "record.declaration-print" | "record.declaration-print-supporting-documents" | "record.registration-print" | "record.registration-print&issue-certified-copies" | "record.registration-print-certified-copies" | "record.registration-bulk-print-certified-copies" | "record.registration-verify-certified-copies" | "record.registration-request-correction" | "record.registration-correct" | "record.registration-request-revocation" | "record.registration-revoke" | "record.registration-request-reinstatement" | "record.registration-reinstate" | "record.confirm-registration" | "record.reject-registration" | "search.birth:my-jurisdiction" | "search.birth" | "search.death:my-jurisdiction" | "search.death" | "search.marriage:my-jurisdiction" | "search.marriage" | "record.read" | "record.read-audit" | "record.read-comments" | "record.create-comments" | "profile.update" | "profile.electronic-signature" | "performance.read" | "performance.read-dashboards" | "performance.vital-statistics-export" | "organisation.read-locations:all" | "organisation.read-locations:my-office" | "organisation.read-locations:my-jurisdiction" | "user.read:all" | "user.read:my-office" | "user.read:my-jurisdiction" | "user.read:only-my-audit" | "user.create:all" | "user.create:my-jurisdiction" | "user.update:all" | "user.update:my-jurisdiction" | "config.update:all" | "user.data-seeding";
186
314
  } | undefined;
315
+ /**
316
+ * Stringifies a ConfigurableScopes object into a scope string.
317
+ * @param {ConfigurableScopes} scope - The scope object to stringify
318
+ * @returns {string} The stringified scope in format "type[key1=value1|value2,key2=value3|value4]"
319
+ * @example
320
+ * stringifyScope({
321
+ * type: "record.notify",
322
+ * options: { event: ["v2.birth", "tennis-club-membership"] }
323
+ * })
324
+ * // Returns: "record.notify[event=v2.birth|tennis-club-membership]"
325
+ */
326
+ export declare function stringifyScope(scope: z.infer<typeof NotifyRecordScope>): string;
187
327
  export declare const scopes: Scope[];
188
328
  export type ParsedScopes = NonNullable<ReturnType<typeof parseScope>>;
189
329
  export type RawScopes = z.infer<typeof LiteralScopes> | (string & {});
190
330
  export type Scope = RawScopes;
331
+ export declare const ActionScopes: z.ZodUnion<[z.ZodUnion<[z.ZodLiteral<"record.declare-birth">, z.ZodLiteral<"record.import">, z.ZodLiteral<"record.declare-birth">, z.ZodLiteral<"record.declare-birth:my-jurisdiction">, z.ZodLiteral<"record.declare-death">, z.ZodLiteral<"record.declare-death:my-jurisdiction">, z.ZodLiteral<"record.declare-marriage">, z.ZodLiteral<"record.declare-marriage:my-jurisdiction">, z.ZodLiteral<"record.declaration-submit-incomplete">, z.ZodLiteral<"record.declaration-submit-for-review">]>, z.ZodUnion<[z.ZodLiteral<"record.declaration-submit-for-approval">, z.ZodLiteral<"record.declaration-submit-for-updates">, z.ZodLiteral<"record.declaration-edit">, z.ZodLiteral<"record.review-duplicates">, z.ZodLiteral<"record.declaration-archive">, z.ZodLiteral<"record.declaration-reinstate">]>, z.ZodLiteral<"record.register">, z.ZodUnion<[z.ZodLiteral<"record.export-records">, z.ZodLiteral<"record.declaration-print">, z.ZodLiteral<"record.declaration-print-supporting-documents">, z.ZodLiteral<"record.registration-print">, z.ZodLiteral<"record.registration-print&issue-certified-copies">, z.ZodLiteral<"record.registration-print-certified-copies">, z.ZodLiteral<"record.registration-bulk-print-certified-copies">, z.ZodLiteral<"record.registration-verify-certified-copies">]>, z.ZodUnion<[z.ZodLiteral<"record.registration-request-correction">, z.ZodLiteral<"record.registration-correct">, z.ZodLiteral<"record.registration-request-revocation">, z.ZodLiteral<"record.registration-revoke">, z.ZodLiteral<"record.registration-request-reinstatement">, z.ZodLiteral<"record.registration-reinstate">, z.ZodLiteral<"record.confirm-registration">, z.ZodLiteral<"record.reject-registration">]>]>;
332
+ export type ActionScopes = z.infer<typeof ActionScopes>;
191
333
  export {};
192
334
  //# sourceMappingURL=scopes.d.ts.map
@@ -20,10 +20,13 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/scopes/index.ts
21
21
  var scopes_exports = {};
22
22
  __export(scopes_exports, {
23
+ ActionScopes: () => ActionScopes,
23
24
  SCOPES: () => SCOPES,
25
+ SearchScopes: () => SearchScopes,
24
26
  findScope: () => findScope,
25
27
  parseScope: () => parseScope,
26
- scopes: () => scopes
28
+ scopes: () => scopes,
29
+ stringifyScope: () => stringifyScope
27
30
  });
28
31
  module.exports = __toCommonJS(scopes_exports);
29
32
 
@@ -52,6 +55,8 @@ var SCOPES = {
52
55
  */
53
56
  RECORD_DECLARE: "record.declare-birth",
54
57
  // declare
58
+ RECORD_IMPORT: "record.import",
59
+ // declare
55
60
  RECORD_DECLARE_BIRTH: "record.declare-birth",
56
61
  RECORD_DECLARE_BIRTH_MY_JURISDICTION: "record.declare-birth:my-jurisdiction",
57
62
  RECORD_DECLARE_DEATH: "record.declare-death",
@@ -139,7 +144,7 @@ var SCOPES = {
139
144
  // data seeding
140
145
  USER_DATA_SEEDING: "user.data-seeding"
141
146
  };
142
- var LiteralScopes = import_zod.z.union([
147
+ var LegacyScopes = import_zod.z.union([
143
148
  import_zod.z.literal(SCOPES.NATLSYSADMIN),
144
149
  import_zod.z.literal(SCOPES.BYPASSRATELIMIT),
145
150
  import_zod.z.literal(SCOPES.DECLARE),
@@ -150,11 +155,17 @@ var LiteralScopes = import_zod.z.union([
150
155
  import_zod.z.literal(SCOPES.PERFORMANCE),
151
156
  import_zod.z.literal(SCOPES.SYSADMIN),
152
157
  import_zod.z.literal(SCOPES.TEAMS),
153
- import_zod.z.literal(SCOPES.CONFIG),
158
+ import_zod.z.literal(SCOPES.CONFIG)
159
+ ]);
160
+ var IntegrationScopes = import_zod.z.union([
154
161
  import_zod.z.literal(SCOPES.WEBHOOK),
155
162
  import_zod.z.literal(SCOPES.NATIONALID),
156
163
  import_zod.z.literal(SCOPES.NOTIFICATION_API),
157
- import_zod.z.literal(SCOPES.RECORDSEARCH),
164
+ import_zod.z.literal(SCOPES.RECORDSEARCH)
165
+ ]);
166
+ var DeclareScopes = import_zod.z.union([
167
+ import_zod.z.literal(SCOPES.RECORD_DECLARE),
168
+ import_zod.z.literal(SCOPES.RECORD_IMPORT),
158
169
  import_zod.z.literal(SCOPES.RECORD_DECLARE_BIRTH),
159
170
  import_zod.z.literal(SCOPES.RECORD_DECLARE_BIRTH_MY_JURISDICTION),
160
171
  import_zod.z.literal(SCOPES.RECORD_DECLARE_DEATH),
@@ -162,15 +173,19 @@ var LiteralScopes = import_zod.z.union([
162
173
  import_zod.z.literal(SCOPES.RECORD_DECLARE_MARRIAGE),
163
174
  import_zod.z.literal(SCOPES.RECORD_DECLARE_MARRIAGE_MY_JURISDICTION),
164
175
  import_zod.z.literal(SCOPES.RECORD_SUBMIT_INCOMPLETE),
165
- import_zod.z.literal(SCOPES.RECORD_SUBMIT_FOR_REVIEW),
166
- import_zod.z.literal(SCOPES.RECORD_UNASSIGN_OTHERS),
176
+ import_zod.z.literal(SCOPES.RECORD_SUBMIT_FOR_REVIEW)
177
+ ]);
178
+ var UnassignScope = import_zod.z.literal(SCOPES.RECORD_UNASSIGN_OTHERS);
179
+ var ValidateScopes = import_zod.z.union([
167
180
  import_zod.z.literal(SCOPES.RECORD_SUBMIT_FOR_APPROVAL),
168
181
  import_zod.z.literal(SCOPES.RECORD_SUBMIT_FOR_UPDATES),
169
182
  import_zod.z.literal(SCOPES.RECORD_DECLARATION_EDIT),
170
183
  import_zod.z.literal(SCOPES.RECORD_REVIEW_DUPLICATES),
171
184
  import_zod.z.literal(SCOPES.RECORD_DECLARATION_ARCHIVE),
172
- import_zod.z.literal(SCOPES.RECORD_DECLARATION_REINSTATE),
173
- import_zod.z.literal(SCOPES.RECORD_REGISTER),
185
+ import_zod.z.literal(SCOPES.RECORD_DECLARATION_REINSTATE)
186
+ ]);
187
+ var RegisterScope = import_zod.z.literal(SCOPES.RECORD_REGISTER);
188
+ var CertifyScopes = import_zod.z.union([
174
189
  import_zod.z.literal(SCOPES.RECORD_EXPORT_RECORDS),
175
190
  import_zod.z.literal(SCOPES.RECORD_DECLARATION_PRINT),
176
191
  import_zod.z.literal(SCOPES.RECORD_PRINT_RECORDS_SUPPORTING_DOCUMENTS),
@@ -178,7 +193,9 @@ var LiteralScopes = import_zod.z.union([
178
193
  import_zod.z.literal(SCOPES.RECORD_PRINT_ISSUE_CERTIFIED_COPIES),
179
194
  import_zod.z.literal(SCOPES.RECORD_PRINT_CERTIFIED_COPIES),
180
195
  import_zod.z.literal(SCOPES.RECORD_BULK_PRINT_CERTIFIED_COPIES),
181
- import_zod.z.literal(SCOPES.RECORD_REGISTRATION_VERIFY_CERTIFIED_COPIES),
196
+ import_zod.z.literal(SCOPES.RECORD_REGISTRATION_VERIFY_CERTIFIED_COPIES)
197
+ ]);
198
+ var CorrectionScopes = import_zod.z.union([
182
199
  import_zod.z.literal(SCOPES.RECORD_REGISTRATION_REQUEST_CORRECTION),
183
200
  import_zod.z.literal(SCOPES.RECORD_REGISTRATION_CORRECT),
184
201
  import_zod.z.literal(SCOPES.RECORD_REGISTRATION_REQUEST_REVOCATION),
@@ -186,25 +203,37 @@ var LiteralScopes = import_zod.z.union([
186
203
  import_zod.z.literal(SCOPES.RECORD_REGISTRATION_REQUEST_REINSTATEMENT),
187
204
  import_zod.z.literal(SCOPES.RECORD_REGISTRATION_REINSTATE),
188
205
  import_zod.z.literal(SCOPES.RECORD_CONFIRM_REGISTRATION),
189
- import_zod.z.literal(SCOPES.RECORD_REJECT_REGISTRATION),
206
+ import_zod.z.literal(SCOPES.RECORD_REJECT_REGISTRATION)
207
+ ]);
208
+ var SearchScopes = import_zod.z.union([
190
209
  import_zod.z.literal(SCOPES.SEARCH_BIRTH_MY_JURISDICTION),
191
210
  import_zod.z.literal(SCOPES.SEARCH_BIRTH),
192
211
  import_zod.z.literal(SCOPES.SEARCH_DEATH_MY_JURISDICTION),
193
212
  import_zod.z.literal(SCOPES.SEARCH_DEATH),
194
213
  import_zod.z.literal(SCOPES.SEARCH_MARRIAGE_MY_JURISDICTION),
195
- import_zod.z.literal(SCOPES.SEARCH_MARRIAGE),
214
+ import_zod.z.literal(SCOPES.SEARCH_MARRIAGE)
215
+ ]);
216
+ var AuditScopes = import_zod.z.union([
196
217
  import_zod.z.literal(SCOPES.RECORD_READ),
197
218
  import_zod.z.literal(SCOPES.RECORD_READ_AUDIT),
198
219
  import_zod.z.literal(SCOPES.RECORD_READ_COMMENTS),
199
- import_zod.z.literal(SCOPES.RECORD_CREATE_COMMENTS),
220
+ import_zod.z.literal(SCOPES.RECORD_CREATE_COMMENTS)
221
+ ]);
222
+ var ProfileScopes = import_zod.z.union([
200
223
  import_zod.z.literal(SCOPES.PROFILE_UPDATE),
201
- import_zod.z.literal(SCOPES.PROFILE_ELECTRONIC_SIGNATURE),
224
+ import_zod.z.literal(SCOPES.PROFILE_ELECTRONIC_SIGNATURE)
225
+ ]);
226
+ var PerformanceScopes = import_zod.z.union([
202
227
  import_zod.z.literal(SCOPES.PERFORMANCE_READ),
203
228
  import_zod.z.literal(SCOPES.PERFORMANCE_READ_DASHBOARDS),
204
- import_zod.z.literal(SCOPES.PERFORMANCE_EXPORT_VITAL_STATISTICS),
229
+ import_zod.z.literal(SCOPES.PERFORMANCE_EXPORT_VITAL_STATISTICS)
230
+ ]);
231
+ var OrganisationScopes = import_zod.z.union([
205
232
  import_zod.z.literal(SCOPES.ORGANISATION_READ_LOCATIONS),
206
233
  import_zod.z.literal(SCOPES.ORGANISATION_READ_LOCATIONS_MY_OFFICE),
207
- import_zod.z.literal(SCOPES.ORGANISATION_READ_LOCATIONS_MY_JURISDICTION),
234
+ import_zod.z.literal(SCOPES.ORGANISATION_READ_LOCATIONS_MY_JURISDICTION)
235
+ ]);
236
+ var UserScopes = import_zod.z.union([
208
237
  import_zod.z.literal(SCOPES.USER_READ),
209
238
  import_zod.z.literal(SCOPES.USER_READ_MY_OFFICE),
210
239
  import_zod.z.literal(SCOPES.USER_READ_MY_JURISDICTION),
@@ -212,11 +241,29 @@ var LiteralScopes = import_zod.z.union([
212
241
  import_zod.z.literal(SCOPES.USER_CREATE),
213
242
  import_zod.z.literal(SCOPES.USER_CREATE_MY_JURISDICTION),
214
243
  import_zod.z.literal(SCOPES.USER_UPDATE),
215
- import_zod.z.literal(SCOPES.USER_UPDATE_MY_JURISDICTION),
216
- import_zod.z.literal(SCOPES.CONFIG_UPDATE_ALL),
217
- import_zod.z.literal(SCOPES.USER_DATA_SEEDING)
244
+ import_zod.z.literal(SCOPES.USER_UPDATE_MY_JURISDICTION)
245
+ ]);
246
+ var ConfigScope = import_zod.z.literal(SCOPES.CONFIG_UPDATE_ALL);
247
+ var DataSeedingScope = import_zod.z.literal(SCOPES.USER_DATA_SEEDING);
248
+ var LiteralScopes = import_zod.z.union([
249
+ LegacyScopes,
250
+ IntegrationScopes,
251
+ UnassignScope,
252
+ DeclareScopes,
253
+ ValidateScopes,
254
+ RegisterScope,
255
+ CertifyScopes,
256
+ CorrectionScopes,
257
+ SearchScopes,
258
+ AuditScopes,
259
+ ProfileScopes,
260
+ PerformanceScopes,
261
+ OrganisationScopes,
262
+ UserScopes,
263
+ ConfigScope,
264
+ DataSeedingScope
218
265
  ]);
219
- var rawConfigurableScopeRegex = /^([a-zA-Z\.]+)\[((?:\w+=[\w-]+(?:\|[\w-]+)*)(:?,[\w-]+=[\w-]+(?:\|[\w-]+)*)*)\]$/;
266
+ var rawConfigurableScopeRegex = /^([a-zA-Z\.]+)\[((?:\w+=[\w.-]+(?:\|[\w.-]+)*)(?:,[\w]+=[\w.-]+(?:\|[\w.-]+)*)*)\]$/;
220
267
  var rawConfigurableScope = import_zod.z.string().regex(rawConfigurableScopeRegex);
221
268
  var CreateUserScope = import_zod.z.object({
222
269
  type: import_zod.z.literal("user.create"),
@@ -236,16 +283,57 @@ var WorkqueueScope = import_zod.z.object({
236
283
  id: import_zod.z.array(import_zod.z.string())
237
284
  })
238
285
  });
239
- var ConfigurableScopes = import_zod.z.discriminatedUnion("type", [
286
+ var NotifyRecordScope = import_zod.z.object({
287
+ type: import_zod.z.literal("record.notify"),
288
+ options: import_zod.z.object({
289
+ event: import_zod.z.array(import_zod.z.string())
290
+ })
291
+ });
292
+ var SearchScope = import_zod.z.object({
293
+ type: import_zod.z.literal("search"),
294
+ options: import_zod.z.object({
295
+ event: import_zod.z.array(import_zod.z.string()).length(1),
296
+ access: import_zod.z.array(import_zod.z.enum(["my-jurisdiction", "all"])).length(1)
297
+ })
298
+ });
299
+ var ConfigurableRawScopes = import_zod.z.discriminatedUnion("type", [
300
+ SearchScope,
240
301
  CreateUserScope,
241
302
  EditUserScope,
242
- WorkqueueScope
303
+ WorkqueueScope,
304
+ NotifyRecordScope
243
305
  ]);
306
+ function flattenAndMergeScopes(scopes2) {
307
+ if (scopes2.length === 0) return null;
308
+ const type = scopes2[0].type;
309
+ const mergedOptions = {};
310
+ for (const scope of scopes2) {
311
+ const entries = Object.entries(scope.options);
312
+ if (entries.length < 2) continue;
313
+ const sourceValues = entries[0][1];
314
+ const targetValues = entries[1][1];
315
+ for (let i = 0; i < sourceValues.length; i++) {
316
+ mergedOptions[sourceValues[i]] = targetValues[i];
317
+ }
318
+ }
319
+ return { type, options: mergedOptions };
320
+ }
244
321
  function findScope(scopes2, scopeType) {
245
- return scopes2.map((rawScope) => parseScope(rawScope)).find(
246
- (parsedScope) => parsedScope?.type === scopeType
322
+ const parsedScopes = scopes2.map((rawScope) => parseScope(rawScope));
323
+ const searchScopes = parsedScopes.filter((scope) => scope?.type === "search");
324
+ const otherScopes = parsedScopes.filter((scope) => scope?.type !== "search");
325
+ const mergedSearchScope = flattenAndMergeScopes(searchScopes);
326
+ return [...otherScopes, mergedSearchScope].find(
327
+ (scope) => scope?.type === scopeType
247
328
  );
248
329
  }
330
+ function getScopeOptions(rawOptions) {
331
+ return rawOptions.split(",").reduce((acc, option) => {
332
+ const [key, value] = option.split("=");
333
+ acc[key] = value.split("|");
334
+ return acc;
335
+ }, {});
336
+ }
249
337
  function parseScope(scope) {
250
338
  const maybeLiteralScope = LiteralScopes.safeParse(scope);
251
339
  if (maybeLiteralScope.success) {
@@ -254,26 +342,28 @@ function parseScope(scope) {
254
342
  };
255
343
  }
256
344
  const maybeConfigurableScope = rawConfigurableScope.safeParse(scope);
257
- if (maybeConfigurableScope.success) {
258
- const rawScope = maybeConfigurableScope.data;
259
- const [, type, rawOptions] = rawScope.match(rawConfigurableScopeRegex) ?? [];
260
- const options = rawOptions.split(",").reduce(
261
- (acc, option) => {
262
- const [key, value] = option.split("=");
263
- acc[key] = value.split("|");
264
- return acc;
265
- },
266
- {}
267
- );
268
- const parsedScope = {
269
- type,
270
- options
271
- };
272
- const result = ConfigurableScopes.safeParse(parsedScope);
273
- if (result.success) {
274
- return result.data;
275
- }
345
+ if (!maybeConfigurableScope.success) {
346
+ return;
276
347
  }
277
- return void 0;
348
+ const rawScope = maybeConfigurableScope.data;
349
+ const [, type, rawOptions] = rawScope.match(rawConfigurableScopeRegex) ?? [];
350
+ const options = getScopeOptions(rawOptions);
351
+ const parsedScope = {
352
+ type,
353
+ options
354
+ };
355
+ const result = ConfigurableRawScopes.safeParse(parsedScope);
356
+ return result.success ? result.data : void 0;
357
+ }
358
+ function stringifyScope(scope) {
359
+ const options = Object.entries(scope.options).map(([key, value]) => `${key}=${value.join("|")}`).join(",");
360
+ return `${scope.type}[${options}]`;
278
361
  }
279
362
  var scopes = Object.values(SCOPES);
363
+ var ActionScopes = import_zod.z.union([
364
+ DeclareScopes,
365
+ ValidateScopes,
366
+ RegisterScope,
367
+ CertifyScopes,
368
+ CorrectionScopes
369
+ ]);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opencrvs/toolkit",
3
- "version": "1.8.0-rc.f97f8f2",
3
+ "version": "1.8.0-rc.f988670",
4
4
  "description": "OpenCRVS toolkit for building country configurations",
5
5
  "license": "MPL-2.0",
6
6
  "exports": {
@@ -19,8 +19,8 @@
19
19
  "ajv": "^8.17.1",
20
20
  "ajv-formats": "^3.0.1",
21
21
  "superjson": "1.9.0-0",
22
- "@trpc/client": "^11.0.0-rc.648",
23
- "@trpc/server": "^11.0.0-rc.532",
22
+ "@trpc/client": "11.4.3",
23
+ "@trpc/server": "11.4.3",
24
24
  "zod-openapi": "^4.2.4"
25
25
  },
26
26
  "devDependencies": {
package/tsconfig.json CHANGED
@@ -19,7 +19,7 @@
19
19
  "@opencrvs/commons/events": ["../commons/src/events/index.ts"]
20
20
  }
21
21
  },
22
- "references": [{ "path": "../commons" }],
22
+ "references": [{ "path": "../commons/tsconfig-commonjs.json" }],
23
23
  "include": ["src/**/*.ts"],
24
24
  "exclude": ["**/node_modules/**", "dist"]
25
25
  }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=conditionals.test.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=validate-address.test.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=validate.test.d.ts.map
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=utils.test.d.ts.map