@opencrvs/toolkit 1.8.0-rc.ffe24c3 → 1.8.1-rc.3e74262
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.
- package/dist/commons/api/router.d.ts +1742 -14918
- package/dist/commons/conditionals/conditionals.d.ts +0 -12
- package/dist/commons/conditionals/validate.d.ts +5 -0
- package/dist/commons/events/ActionConfig.d.ts +37041 -35133
- package/dist/commons/events/ActionDocument.d.ts +3159 -1626
- package/dist/commons/events/ActionInput.d.ts +2280 -1380
- package/dist/commons/events/ActionType.d.ts +7 -4
- package/dist/commons/events/AdvancedSearchConfig.d.ts +100 -51
- package/dist/commons/events/CompositeFieldValue.d.ts +15 -15
- package/dist/commons/events/CountryConfigQueryInput.d.ts +1162 -760
- package/dist/commons/events/Draft.d.ts +190 -118
- package/dist/commons/events/EventConfig.d.ts +20824 -22965
- package/dist/commons/events/EventDocument.d.ts +1669 -1021
- package/dist/commons/events/EventIndex.d.ts +394 -175
- package/dist/commons/events/EventMetadata.d.ts +6 -4
- package/dist/commons/events/FieldConfig.d.ts +1528 -449
- package/dist/commons/events/FieldType.d.ts +3 -1
- package/dist/commons/events/FieldTypeMapping.d.ts +80 -41
- package/dist/commons/events/FieldValue.d.ts +58 -28
- package/dist/commons/events/FormConfig.d.ts +9263 -2657
- package/dist/commons/events/PageConfig.d.ts +3642 -2028
- package/dist/commons/events/SummaryConfig.d.ts +10 -10
- package/dist/commons/events/User.d.ts +6 -3
- package/dist/commons/events/WorkqueueConfig.d.ts +2153 -1337
- package/dist/commons/events/defineConfig.d.ts +2759 -3250
- package/dist/commons/events/event.d.ts +10 -18
- package/dist/commons/events/field.d.ts +13 -1
- package/dist/commons/events/scopes.d.ts +2 -1
- package/dist/commons/events/test.utils.d.ts +58 -34
- package/dist/commons/events/utils.d.ts +8848 -6794
- package/dist/conditionals/index.js +23 -53
- package/dist/events/index.js +1594 -1341
- package/dist/scopes/index.d.ts +92 -6
- package/dist/scopes/index.js +38 -9
- package/package.json +3 -3
package/dist/scopes/index.d.ts
CHANGED
@@ -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
|
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
|
-
|
168
|
-
export type
|
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
|
279
|
+
* Parses a configurable scope string into a ConfigurableRawScopes object.
|
200
280
|
* @param {string} scope - The scope string to parse
|
201
|
-
* @returns {
|
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:
|
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 & {});
|
package/dist/scopes/index.js
CHANGED
@@ -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
|
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
|
-
|
301
|
-
|
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
|
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 =
|
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.
|
3
|
+
"version": "1.8.1-rc.3e74262",
|
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.
|
23
|
-
"@trpc/server": "11.4.
|
22
|
+
"@trpc/client": "11.4.3",
|
23
|
+
"@trpc/server": "11.4.3",
|
24
24
|
"zod-openapi": "^4.2.4"
|
25
25
|
},
|
26
26
|
"devDependencies": {
|