@opencrvs/toolkit 1.8.0-rc.fd8a78f → 1.8.0-rc.fde35f6

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 (35) hide show
  1. package/dist/commons/api/router.d.ts +3117 -11206
  2. package/dist/commons/conditionals/conditionals.d.ts +0 -12
  3. package/dist/commons/events/ActionConfig.d.ts +12032 -3972
  4. package/dist/commons/events/ActionDocument.d.ts +3029 -1886
  5. package/dist/commons/events/ActionInput.d.ts +2406 -1506
  6. package/dist/commons/events/AdvancedSearchConfig.d.ts +304 -51
  7. package/dist/commons/events/CompositeFieldValue.d.ts +15 -15
  8. package/dist/commons/events/CountryConfigQueryInput.d.ts +1891 -741
  9. package/dist/commons/events/CreatedAtLocation.d.ts +1 -2
  10. package/dist/commons/events/Draft.d.ts +213 -136
  11. package/dist/commons/events/EventConfig.d.ts +4770 -755
  12. package/dist/commons/events/EventDocument.d.ts +1942 -1219
  13. package/dist/commons/events/EventIndex.d.ts +897 -263
  14. package/dist/commons/events/EventMetadata.d.ts +73 -31
  15. package/dist/commons/events/FieldConfig.d.ts +607 -30
  16. package/dist/commons/events/FieldType.d.ts +2 -1
  17. package/dist/commons/events/FieldTypeMapping.d.ts +73 -41
  18. package/dist/commons/events/FieldValue.d.ts +57 -28
  19. package/dist/commons/events/FormConfig.d.ts +4685 -1295
  20. package/dist/commons/events/PageConfig.d.ts +868 -38
  21. package/dist/commons/events/User.d.ts +6 -3
  22. package/dist/commons/events/WorkqueueColumnConfig.d.ts +11 -11
  23. package/dist/commons/events/WorkqueueConfig.d.ts +4490 -1177
  24. package/dist/commons/events/defineConfig.d.ts +759 -34
  25. package/dist/commons/events/event.d.ts +15 -10
  26. package/dist/commons/events/field.d.ts +17 -0
  27. package/dist/commons/events/scopes.d.ts +1 -2
  28. package/dist/commons/events/test.utils.d.ts +83 -36
  29. package/dist/commons/events/transactions.d.ts +1 -1
  30. package/dist/commons/events/utils.d.ts +2926 -88
  31. package/dist/conditionals/index.js +22 -51
  32. package/dist/events/index.js +1550 -1048
  33. package/dist/scopes/index.d.ts +96 -7
  34. package/dist/scopes/index.js +105 -26
  35. package/package.json +3 -3
@@ -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";
@@ -85,8 +86,79 @@ export declare const SCOPES: {
85
86
  readonly CONFIG_UPDATE_ALL: "config.update:all";
86
87
  readonly USER_DATA_SEEDING: "user.data-seeding";
87
88
  };
88
- 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.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.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">]>;
89
- 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<{
90
162
  type: z.ZodLiteral<"user.create">;
91
163
  options: z.ZodObject<{
92
164
  role: z.ZodArray<z.ZodString, "many">;
@@ -163,8 +235,15 @@ declare const ConfigurableScopes: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
163
235
  event: string[];
164
236
  };
165
237
  }>]>;
166
- export type ConfigurableScopeType = ConfigurableScopes['type'];
167
- export type ConfigurableScopes = z.infer<typeof ConfigurableScopes>;
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;
168
247
  export declare function findScope<T extends ConfigurableScopeType>(scopes: string[], scopeType: T): Extract<{
169
248
  type: "user.create";
170
249
  options: {
@@ -193,16 +272,24 @@ export declare function findScope<T extends ConfigurableScopeType>(scopes: strin
193
272
  };
194
273
  }, {
195
274
  type: T;
275
+ }> | Extract<FlattenedSearchScope, {
276
+ type: T;
196
277
  }> | undefined;
197
278
  /**
198
- * Parses a configurable scope string into a ConfigurableScopes object.
279
+ * Parses a configurable scope string into a ConfigurableRawScopes object.
199
280
  * @param {string} scope - The scope string to parse
200
- * @returns {ConfigurableScopes | undefined} The parsed scope object if valid, undefined otherwise
281
+ * @returns {ConfigurableRawScopes | undefined} The parsed scope object if valid, undefined otherwise
201
282
  * @example
202
283
  * parseScope("user.create[role=field-agent|registration-agent]")
203
284
  * // Returns: { type: "user.create", options: { role: ["field-agent", "registration-agent"] } }
204
285
  */
205
286
  export declare function parseScope(scope: string): {
287
+ type: "search";
288
+ options: {
289
+ event: string[];
290
+ access: ("my-jurisdiction" | "all")[];
291
+ };
292
+ } | {
206
293
  type: "user.create";
207
294
  options: {
208
295
  role: string[];
@@ -236,10 +323,12 @@ export declare function parseScope(scope: string): {
236
323
  * })
237
324
  * // Returns: "record.notify[event=v2.birth|tennis-club-membership]"
238
325
  */
239
- export declare function stringifyScope(scope: ConfigurableScopes): string;
326
+ export declare function stringifyScope(scope: z.infer<typeof NotifyRecordScope>): string;
240
327
  export declare const scopes: Scope[];
241
328
  export type ParsedScopes = NonNullable<ReturnType<typeof parseScope>>;
242
329
  export type RawScopes = z.infer<typeof LiteralScopes> | (string & {});
243
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>;
244
333
  export {};
245
334
  //# sourceMappingURL=scopes.d.ts.map
@@ -20,7 +20,9 @@ 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
28
  scopes: () => scopes,
@@ -142,7 +144,7 @@ var SCOPES = {
142
144
  // data seeding
143
145
  USER_DATA_SEEDING: "user.data-seeding"
144
146
  };
145
- var LiteralScopes = import_zod.z.union([
147
+ var LegacyScopes = import_zod.z.union([
146
148
  import_zod.z.literal(SCOPES.NATLSYSADMIN),
147
149
  import_zod.z.literal(SCOPES.BYPASSRATELIMIT),
148
150
  import_zod.z.literal(SCOPES.DECLARE),
@@ -153,11 +155,16 @@ var LiteralScopes = import_zod.z.union([
153
155
  import_zod.z.literal(SCOPES.PERFORMANCE),
154
156
  import_zod.z.literal(SCOPES.SYSADMIN),
155
157
  import_zod.z.literal(SCOPES.TEAMS),
156
- import_zod.z.literal(SCOPES.CONFIG),
158
+ import_zod.z.literal(SCOPES.CONFIG)
159
+ ]);
160
+ var IntegrationScopes = import_zod.z.union([
157
161
  import_zod.z.literal(SCOPES.WEBHOOK),
158
162
  import_zod.z.literal(SCOPES.NATIONALID),
159
163
  import_zod.z.literal(SCOPES.NOTIFICATION_API),
160
- 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),
161
168
  import_zod.z.literal(SCOPES.RECORD_IMPORT),
162
169
  import_zod.z.literal(SCOPES.RECORD_DECLARE_BIRTH),
163
170
  import_zod.z.literal(SCOPES.RECORD_DECLARE_BIRTH_MY_JURISDICTION),
@@ -166,15 +173,19 @@ var LiteralScopes = import_zod.z.union([
166
173
  import_zod.z.literal(SCOPES.RECORD_DECLARE_MARRIAGE),
167
174
  import_zod.z.literal(SCOPES.RECORD_DECLARE_MARRIAGE_MY_JURISDICTION),
168
175
  import_zod.z.literal(SCOPES.RECORD_SUBMIT_INCOMPLETE),
169
- import_zod.z.literal(SCOPES.RECORD_SUBMIT_FOR_REVIEW),
170
- 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([
171
180
  import_zod.z.literal(SCOPES.RECORD_SUBMIT_FOR_APPROVAL),
172
181
  import_zod.z.literal(SCOPES.RECORD_SUBMIT_FOR_UPDATES),
173
182
  import_zod.z.literal(SCOPES.RECORD_DECLARATION_EDIT),
174
183
  import_zod.z.literal(SCOPES.RECORD_REVIEW_DUPLICATES),
175
184
  import_zod.z.literal(SCOPES.RECORD_DECLARATION_ARCHIVE),
176
- import_zod.z.literal(SCOPES.RECORD_DECLARATION_REINSTATE),
177
- 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([
178
189
  import_zod.z.literal(SCOPES.RECORD_EXPORT_RECORDS),
179
190
  import_zod.z.literal(SCOPES.RECORD_DECLARATION_PRINT),
180
191
  import_zod.z.literal(SCOPES.RECORD_PRINT_RECORDS_SUPPORTING_DOCUMENTS),
@@ -182,7 +193,9 @@ var LiteralScopes = import_zod.z.union([
182
193
  import_zod.z.literal(SCOPES.RECORD_PRINT_ISSUE_CERTIFIED_COPIES),
183
194
  import_zod.z.literal(SCOPES.RECORD_PRINT_CERTIFIED_COPIES),
184
195
  import_zod.z.literal(SCOPES.RECORD_BULK_PRINT_CERTIFIED_COPIES),
185
- 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([
186
199
  import_zod.z.literal(SCOPES.RECORD_REGISTRATION_REQUEST_CORRECTION),
187
200
  import_zod.z.literal(SCOPES.RECORD_REGISTRATION_CORRECT),
188
201
  import_zod.z.literal(SCOPES.RECORD_REGISTRATION_REQUEST_REVOCATION),
@@ -190,25 +203,37 @@ var LiteralScopes = import_zod.z.union([
190
203
  import_zod.z.literal(SCOPES.RECORD_REGISTRATION_REQUEST_REINSTATEMENT),
191
204
  import_zod.z.literal(SCOPES.RECORD_REGISTRATION_REINSTATE),
192
205
  import_zod.z.literal(SCOPES.RECORD_CONFIRM_REGISTRATION),
193
- 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([
194
209
  import_zod.z.literal(SCOPES.SEARCH_BIRTH_MY_JURISDICTION),
195
210
  import_zod.z.literal(SCOPES.SEARCH_BIRTH),
196
211
  import_zod.z.literal(SCOPES.SEARCH_DEATH_MY_JURISDICTION),
197
212
  import_zod.z.literal(SCOPES.SEARCH_DEATH),
198
213
  import_zod.z.literal(SCOPES.SEARCH_MARRIAGE_MY_JURISDICTION),
199
- import_zod.z.literal(SCOPES.SEARCH_MARRIAGE),
214
+ import_zod.z.literal(SCOPES.SEARCH_MARRIAGE)
215
+ ]);
216
+ var AuditScopes = import_zod.z.union([
200
217
  import_zod.z.literal(SCOPES.RECORD_READ),
201
218
  import_zod.z.literal(SCOPES.RECORD_READ_AUDIT),
202
219
  import_zod.z.literal(SCOPES.RECORD_READ_COMMENTS),
203
- 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([
204
223
  import_zod.z.literal(SCOPES.PROFILE_UPDATE),
205
- 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([
206
227
  import_zod.z.literal(SCOPES.PERFORMANCE_READ),
207
228
  import_zod.z.literal(SCOPES.PERFORMANCE_READ_DASHBOARDS),
208
- 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([
209
232
  import_zod.z.literal(SCOPES.ORGANISATION_READ_LOCATIONS),
210
233
  import_zod.z.literal(SCOPES.ORGANISATION_READ_LOCATIONS_MY_OFFICE),
211
- 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([
212
237
  import_zod.z.literal(SCOPES.USER_READ),
213
238
  import_zod.z.literal(SCOPES.USER_READ_MY_OFFICE),
214
239
  import_zod.z.literal(SCOPES.USER_READ_MY_JURISDICTION),
@@ -216,9 +241,27 @@ var LiteralScopes = import_zod.z.union([
216
241
  import_zod.z.literal(SCOPES.USER_CREATE),
217
242
  import_zod.z.literal(SCOPES.USER_CREATE_MY_JURISDICTION),
218
243
  import_zod.z.literal(SCOPES.USER_UPDATE),
219
- import_zod.z.literal(SCOPES.USER_UPDATE_MY_JURISDICTION),
220
- import_zod.z.literal(SCOPES.CONFIG_UPDATE_ALL),
221
- 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
222
265
  ]);
223
266
  var rawConfigurableScopeRegex = /^([a-zA-Z\.]+)\[((?:\w+=[\w.-]+(?:\|[\w.-]+)*)(?:,[\w]+=[\w.-]+(?:\|[\w.-]+)*)*)\]$/;
224
267
  var rawConfigurableScope = import_zod.z.string().regex(rawConfigurableScopeRegex);
@@ -246,18 +289,51 @@ var NotifyRecordScope = import_zod.z.object({
246
289
  event: import_zod.z.array(import_zod.z.string())
247
290
  })
248
291
  });
249
- var ConfigurableScopes = import_zod.z.discriminatedUnion("type", [
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,
250
301
  CreateUserScope,
251
302
  EditUserScope,
252
303
  WorkqueueScope,
253
304
  NotifyRecordScope
254
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
+ }
255
321
  function findScope(scopes2, scopeType) {
256
322
  const parsedScopes = scopes2.map((rawScope) => parseScope(rawScope));
257
- return parsedScopes.find(
258
- (parsedScope) => parsedScope?.type === scopeType
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
259
328
  );
260
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
+ }
261
337
  function parseScope(scope) {
262
338
  const maybeLiteralScope = LiteralScopes.safeParse(scope);
263
339
  if (maybeLiteralScope.success) {
@@ -271,16 +347,12 @@ function parseScope(scope) {
271
347
  }
272
348
  const rawScope = maybeConfigurableScope.data;
273
349
  const [, type, rawOptions] = rawScope.match(rawConfigurableScopeRegex) ?? [];
274
- const options = rawOptions.split(",").reduce((acc, option) => {
275
- const [key, value] = option.split("=");
276
- acc[key] = value.split("|");
277
- return acc;
278
- }, {});
350
+ const options = getScopeOptions(rawOptions);
279
351
  const parsedScope = {
280
352
  type,
281
353
  options
282
354
  };
283
- const result = ConfigurableScopes.safeParse(parsedScope);
355
+ const result = ConfigurableRawScopes.safeParse(parsedScope);
284
356
  return result.success ? result.data : void 0;
285
357
  }
286
358
  function stringifyScope(scope) {
@@ -288,3 +360,10 @@ function stringifyScope(scope) {
288
360
  return `${scope.type}[${options}]`;
289
361
  }
290
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.fd8a78f",
3
+ "version": "1.8.0-rc.fde35f6",
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": {