@opencrvs/toolkit 1.8.0-rc.ffe24c3 → 1.8.1-rc.0f10027

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 +1766 -14918
  2. package/dist/commons/conditionals/conditionals.d.ts +0 -12
  3. package/dist/commons/conditionals/validate.d.ts +5 -0
  4. package/dist/commons/events/ActionConfig.d.ts +37041 -35133
  5. package/dist/commons/events/ActionDocument.d.ts +3195 -1626
  6. package/dist/commons/events/ActionInput.d.ts +2316 -1380
  7. package/dist/commons/events/ActionType.d.ts +7 -4
  8. package/dist/commons/events/AdvancedSearchConfig.d.ts +134 -85
  9. package/dist/commons/events/CompositeFieldValue.d.ts +15 -15
  10. package/dist/commons/events/CountryConfigQueryInput.d.ts +1162 -760
  11. package/dist/commons/events/Draft.d.ts +190 -118
  12. package/dist/commons/events/EventConfig.d.ts +20268 -22409
  13. package/dist/commons/events/EventDocument.d.ts +1695 -1021
  14. package/dist/commons/events/EventIndex.d.ts +516 -175
  15. package/dist/commons/events/EventMetadata.d.ts +6 -4
  16. package/dist/commons/events/FieldConfig.d.ts +1528 -449
  17. package/dist/commons/events/FieldType.d.ts +3 -1
  18. package/dist/commons/events/FieldTypeMapping.d.ts +80 -41
  19. package/dist/commons/events/FieldValue.d.ts +58 -28
  20. package/dist/commons/events/FormConfig.d.ts +9263 -2657
  21. package/dist/commons/events/PageConfig.d.ts +3642 -2028
  22. package/dist/commons/events/SummaryConfig.d.ts +10 -10
  23. package/dist/commons/events/User.d.ts +6 -3
  24. package/dist/commons/events/WorkqueueConfig.d.ts +2243 -1338
  25. package/dist/commons/events/defineConfig.d.ts +2761 -3252
  26. package/dist/commons/events/event.d.ts +18 -18
  27. package/dist/commons/events/field.d.ts +27 -1
  28. package/dist/commons/events/scopes.d.ts +2 -1
  29. package/dist/commons/events/test.utils.d.ts +62 -34
  30. package/dist/commons/events/utils.d.ts +8850 -6796
  31. package/dist/conditionals/index.js +23 -53
  32. package/dist/events/index.js +1617 -1344
  33. package/dist/scopes/index.d.ts +92 -6
  34. package/dist/scopes/index.js +38 -9
  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";
@@ -87,7 +88,77 @@ export declare const SCOPES: {
87
88
  };
88
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">]>;
89
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">]>;
90
- declare const ConfigurableScopes: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
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<{
91
162
  type: z.ZodLiteral<"user.create">;
92
163
  options: z.ZodObject<{
93
164
  role: z.ZodArray<z.ZodString, "many">;
@@ -164,8 +235,15 @@ declare const ConfigurableScopes: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
164
235
  event: string[];
165
236
  };
166
237
  }>]>;
167
- export type ConfigurableScopeType = ConfigurableScopes['type'];
168
- 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;
169
247
  export declare function findScope<T extends ConfigurableScopeType>(scopes: string[], scopeType: T): Extract<{
170
248
  type: "user.create";
171
249
  options: {
@@ -194,16 +272,24 @@ export declare function findScope<T extends ConfigurableScopeType>(scopes: strin
194
272
  };
195
273
  }, {
196
274
  type: T;
275
+ }> | Extract<FlattenedSearchScope, {
276
+ type: T;
197
277
  }> | undefined;
198
278
  /**
199
- * Parses a configurable scope string into a ConfigurableScopes object.
279
+ * Parses a configurable scope string into a ConfigurableRawScopes object.
200
280
  * @param {string} scope - The scope string to parse
201
- * @returns {ConfigurableScopes | undefined} The parsed scope object if valid, undefined otherwise
281
+ * @returns {ConfigurableRawScopes | undefined} The parsed scope object if valid, undefined otherwise
202
282
  * @example
203
283
  * parseScope("user.create[role=field-agent|registration-agent]")
204
284
  * // Returns: { type: "user.create", options: { role: ["field-agent", "registration-agent"] } }
205
285
  */
206
286
  export declare function parseScope(scope: string): {
287
+ type: "search";
288
+ options: {
289
+ event: string[];
290
+ access: ("my-jurisdiction" | "all")[];
291
+ };
292
+ } | {
207
293
  type: "user.create";
208
294
  options: {
209
295
  role: string[];
@@ -237,7 +323,7 @@ export declare function parseScope(scope: string): {
237
323
  * })
238
324
  * // Returns: "record.notify[event=v2.birth|tennis-club-membership]"
239
325
  */
240
- export declare function stringifyScope(scope: ConfigurableScopes): string;
326
+ export declare function stringifyScope(scope: z.infer<typeof NotifyRecordScope>): string;
241
327
  export declare const scopes: Scope[];
242
328
  export type ParsedScopes = NonNullable<ReturnType<typeof parseScope>>;
243
329
  export type RawScopes = z.infer<typeof LiteralScopes> | (string & {});
@@ -289,18 +289,51 @@ var NotifyRecordScope = import_zod.z.object({
289
289
  event: import_zod.z.array(import_zod.z.string())
290
290
  })
291
291
  });
292
- 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,
293
301
  CreateUserScope,
294
302
  EditUserScope,
295
303
  WorkqueueScope,
296
304
  NotifyRecordScope
297
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
+ }
298
321
  function findScope(scopes2, scopeType) {
299
322
  const parsedScopes = scopes2.map((rawScope) => parseScope(rawScope));
300
- return parsedScopes.find(
301
- (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
302
328
  );
303
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
+ }
304
337
  function parseScope(scope) {
305
338
  const maybeLiteralScope = LiteralScopes.safeParse(scope);
306
339
  if (maybeLiteralScope.success) {
@@ -314,16 +347,12 @@ function parseScope(scope) {
314
347
  }
315
348
  const rawScope = maybeConfigurableScope.data;
316
349
  const [, type, rawOptions] = rawScope.match(rawConfigurableScopeRegex) ?? [];
317
- const options = rawOptions.split(",").reduce((acc, option) => {
318
- const [key, value] = option.split("=");
319
- acc[key] = value.split("|");
320
- return acc;
321
- }, {});
350
+ const options = getScopeOptions(rawOptions);
322
351
  const parsedScope = {
323
352
  type,
324
353
  options
325
354
  };
326
- const result = ConfigurableScopes.safeParse(parsedScope);
355
+ const result = ConfigurableRawScopes.safeParse(parsedScope);
327
356
  return result.success ? result.data : void 0;
328
357
  }
329
358
  function stringifyScope(scope) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opencrvs/toolkit",
3
- "version": "1.8.0-rc.ffe24c3",
3
+ "version": "1.8.1-rc.0f10027",
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.4.2",
23
- "@trpc/server": "11.4.2",
22
+ "@trpc/client": "11.4.3",
23
+ "@trpc/server": "11.4.3",
24
24
  "zod-openapi": "^4.2.4"
25
25
  },
26
26
  "devDependencies": {