@opencrvs/toolkit 2.0.0-rc.fef9d21 → 2.0.0-rc.ff04b30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/create-countryconfig/index.js +73 -0
- package/create-countryconfig/package.json +11 -0
- package/dist/application-config/index.js +68 -39
- package/dist/cli.js +539 -175
- package/dist/commons/api/router.d.ts +3334 -271
- package/dist/commons/application-config/index.d.ts +16 -4
- package/dist/commons/conditionals/conditionals.d.ts +6 -6
- package/dist/commons/conditionals/validate.d.ts +1 -0
- package/dist/commons/events/ActionInput.d.ts +108 -0
- package/dist/commons/events/Draft.d.ts +3 -0
- package/dist/commons/events/EventIndex.d.ts +0 -3
- package/dist/commons/events/EventMetadata.d.ts +0 -7
- package/dist/commons/events/FieldConfig.d.ts +10 -0
- package/dist/commons/events/WorkqueueConfig.d.ts +146 -146
- package/dist/commons/events/locations.d.ts +38 -1
- package/dist/commons/events/mocks.test.utils.d.ts +19 -0
- package/dist/commons/events/scopes.d.ts +24 -1
- package/dist/commons/events/state/index.d.ts +0 -4
- package/dist/commons/events/state/utils.d.ts +0 -2
- package/dist/commons/events/utils.d.ts +1 -1
- package/dist/conditionals/index.js +40 -8
- package/dist/events/index.js +184 -83
- package/dist/migrations/v2.0/add-birth-certificate-issuance-flag.d.ts.map +1 -1
- package/dist/migrations/v2.0/add-birth-certificate-issuance-flag.js +60 -35
- package/dist/migrations/v2.0/checkout-upstream-files.d.ts +1 -1
- package/dist/migrations/v2.0/checkout-upstream-files.d.ts.map +1 -1
- package/dist/migrations/v2.0/checkout-upstream-files.js +1 -2
- package/dist/migrations/v2.0/delete-infrastructure-directory.d.ts +9 -1
- package/dist/migrations/v2.0/delete-infrastructure-directory.d.ts.map +1 -1
- package/dist/migrations/v2.0/delete-infrastructure-directory.js +66 -20
- package/dist/migrations/v2.0/fix-accept-requested-registration-function-type.d.ts +3 -0
- package/dist/migrations/v2.0/fix-accept-requested-registration-function-type.d.ts.map +1 -0
- package/dist/migrations/v2.0/fix-accept-requested-registration-function-type.js +110 -0
- package/dist/migrations/v2.0/index.d.ts +5 -3
- package/dist/migrations/v2.0/index.d.ts.map +1 -1
- package/dist/migrations/v2.0/index.js +537 -173
- package/dist/migrations/v2.0/make-built-in-validate-actions-custom.d.ts.map +1 -1
- package/dist/migrations/v2.0/make-built-in-validate-actions-custom.js +90 -1
- package/dist/migrations/v2.0/merge-infrastructure-directory.d.ts +11 -1
- package/dist/migrations/v2.0/merge-infrastructure-directory.d.ts.map +1 -1
- package/dist/migrations/v2.0/merge-infrastructure-directory.js +17 -16
- package/dist/migrations/v2.0/migrate-scopes.d.ts.map +1 -1
- package/dist/migrations/v2.0/migrate-scopes.js +54 -30
- package/dist/migrations/v2.0/migrate-workqueue-configs.d.ts.map +1 -1
- package/dist/migrations/v2.0/migrate-workqueue-configs.js +140 -59
- package/dist/notification/index.js +78 -53
- package/dist/scopes/index.d.ts +87 -10
- package/dist/scopes/index.js +46 -9
- package/opencrvs-toolkit-2.0.0-rc.ff04b30.tgz +0 -0
- package/package.json +1 -1
- package/tsconfig.tsbuildinfo +1 -1
- package/opencrvs-toolkit-2.0.0-rc.fef9d21.tgz +0 -0
|
@@ -110,6 +110,10 @@ var scopeByEvent = z2.preprocess(
|
|
|
110
110
|
(val) => val === void 0 ? void 0 : [val].flat(),
|
|
111
111
|
z2.array(z2.string()).optional()
|
|
112
112
|
).describe("Event type, e.g. birth, death");
|
|
113
|
+
var userRole = z2.preprocess(
|
|
114
|
+
(val) => val === void 0 ? void 0 : [val].flat(),
|
|
115
|
+
z2.array(z2.string()).optional()
|
|
116
|
+
).describe("User role, e.g. admin, field agent");
|
|
113
117
|
var scopeOptionsPlaceEvent = z2.object({
|
|
114
118
|
event: scopeByEvent,
|
|
115
119
|
placeOfEvent: JurisdictionFilter.optional()
|
|
@@ -133,6 +137,9 @@ var CustomActionScopeOptions = AllRecordScopeOptions.extend({
|
|
|
133
137
|
var AccessLevelOptions = z2.object({
|
|
134
138
|
accessLevel: JurisdictionFilter.optional()
|
|
135
139
|
});
|
|
140
|
+
var AllUserScopeOptions = AccessLevelOptions.extend({
|
|
141
|
+
role: userRole.optional()
|
|
142
|
+
});
|
|
136
143
|
var WorkqueueOrDashboardOptions = z2.object({
|
|
137
144
|
ids: z2.preprocess(
|
|
138
145
|
(val) => val === void 0 ? void 0 : [val].flat(),
|
|
@@ -142,6 +149,7 @@ var WorkqueueOrDashboardOptions = z2.object({
|
|
|
142
149
|
var AllScopeOptions = z2.object({
|
|
143
150
|
...AllRecordScopeOptions.shape,
|
|
144
151
|
...AccessLevelOptions.shape,
|
|
152
|
+
...AllUserScopeOptions.shape,
|
|
145
153
|
...WorkqueueOrDashboardOptions.shape
|
|
146
154
|
});
|
|
147
155
|
var ScopeOptionKey = AllScopeOptions.keyof();
|
|
@@ -214,6 +222,30 @@ var RecordScopeV2 = z2.discriminatedUnion("type", [
|
|
|
214
222
|
]).describe(
|
|
215
223
|
"Scopes used to check user's permission to perform actions on a record."
|
|
216
224
|
);
|
|
225
|
+
var SystemScopeType = z2.enum([
|
|
226
|
+
"organisation.read-locations",
|
|
227
|
+
"user.read",
|
|
228
|
+
"user.create",
|
|
229
|
+
"user.edit",
|
|
230
|
+
"user.search"
|
|
231
|
+
]);
|
|
232
|
+
var UserScopeType = SystemScopeType.extract([
|
|
233
|
+
"user.read",
|
|
234
|
+
"user.create",
|
|
235
|
+
"user.edit",
|
|
236
|
+
"user.search"
|
|
237
|
+
]);
|
|
238
|
+
var ScopesWithRoleOption = UserScopeType.extract(["user.edit", "user.create"]);
|
|
239
|
+
var UserScopeV2 = z2.discriminatedUnion("type", [
|
|
240
|
+
z2.object({
|
|
241
|
+
type: ScopesWithRoleOption,
|
|
242
|
+
options: AllUserScopeOptions.optional()
|
|
243
|
+
}),
|
|
244
|
+
z2.object({
|
|
245
|
+
type: UserScopeType.extract(["user.read", "user.search"]),
|
|
246
|
+
options: AccessLevelOptions.optional()
|
|
247
|
+
})
|
|
248
|
+
]);
|
|
217
249
|
var ResolvedRecordScopeV2 = z2.discriminatedUnion("type", [
|
|
218
250
|
z2.object({
|
|
219
251
|
type: ScopesWithPlaceEventOptions,
|
|
@@ -234,16 +266,14 @@ var ResolvedRecordScopeV2 = z2.discriminatedUnion("type", [
|
|
|
234
266
|
}).optional()
|
|
235
267
|
})
|
|
236
268
|
]).describe("Resolved scope with location/user IDs instead of filters.");
|
|
237
|
-
var SystemScopeType = z2.enum([
|
|
238
|
-
"organisation.read-locations",
|
|
239
|
-
"user.read",
|
|
240
|
-
"user.create",
|
|
241
|
-
"user.edit"
|
|
242
|
-
]);
|
|
243
269
|
var Scope = z2.discriminatedUnion("type", [
|
|
244
270
|
z2.object({ type: PlainScopeType }),
|
|
245
271
|
...RecordScopeV2.options,
|
|
246
|
-
|
|
272
|
+
...UserScopeV2.options,
|
|
273
|
+
z2.object({
|
|
274
|
+
type: z2.literal("organisation.read-locations"),
|
|
275
|
+
options: AccessLevelOptions.optional()
|
|
276
|
+
}),
|
|
247
277
|
z2.object({
|
|
248
278
|
type: z2.literal("workqueue"),
|
|
249
279
|
options: WorkqueueOrDashboardOptions
|
|
@@ -263,7 +293,9 @@ var ScopeType = z2.enum([
|
|
|
263
293
|
var EncodedScope = z2.string().brand("EncodedScope");
|
|
264
294
|
var DEFAULT_SCOPE_OPTIONS = {
|
|
265
295
|
placeOfEvent: JurisdictionFilter.enum.all,
|
|
266
|
-
accessLevel: JurisdictionFilter.enum.all
|
|
296
|
+
accessLevel: JurisdictionFilter.enum.all,
|
|
297
|
+
registeredIn: JurisdictionFilter.enum.all,
|
|
298
|
+
declaredIn: JurisdictionFilter.enum.all
|
|
267
299
|
};
|
|
268
300
|
|
|
269
301
|
// ../commons/src/authentication.ts
|
|
@@ -622,7 +654,10 @@ var ActionConditional = z7.discriminatedUnion("type", [
|
|
|
622
654
|
ShowConditional,
|
|
623
655
|
// Action can be shown to the user in the list but as disabled
|
|
624
656
|
EnableConditional
|
|
625
|
-
])
|
|
657
|
+
]).meta({
|
|
658
|
+
description: "Action conditional configuration",
|
|
659
|
+
id: "ActionConditional"
|
|
660
|
+
});
|
|
626
661
|
var DisplayOnReviewConditional = z7.object({
|
|
627
662
|
type: z7.literal(ConditionalType.DISPLAY_ON_REVIEW),
|
|
628
663
|
conditional: Conditional
|
|
@@ -950,28 +985,20 @@ function schemaPriority(schema) {
|
|
|
950
985
|
return idx === -1 ? 9999 : idx;
|
|
951
986
|
}
|
|
952
987
|
function safeUnion(schemas) {
|
|
988
|
+
const sortedSchemas = [...schemas].sort(
|
|
989
|
+
(a, b) => schemaPriority(a) - schemaPriority(b)
|
|
990
|
+
);
|
|
953
991
|
return z12.any().superRefine((val, ctx) => {
|
|
954
|
-
const
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
if (successful.length === 0) {
|
|
959
|
-
ctx.addIssue({
|
|
960
|
-
code: "invalid_type",
|
|
961
|
-
expected: "custom",
|
|
962
|
-
message: "Value does not match any schema"
|
|
963
|
-
});
|
|
964
|
-
return;
|
|
965
|
-
}
|
|
966
|
-
successful.sort((a, b) => schemaPriority(a) - schemaPriority(b));
|
|
967
|
-
const best = successful[0];
|
|
968
|
-
if (!best.safeParse(val).success) {
|
|
969
|
-
ctx.addIssue({
|
|
970
|
-
expected: "custom",
|
|
971
|
-
code: "invalid_type",
|
|
972
|
-
message: "Value did not match the best schema"
|
|
973
|
-
});
|
|
992
|
+
for (const schema of sortedSchemas) {
|
|
993
|
+
if (schema.safeParse(val).success) {
|
|
994
|
+
return;
|
|
995
|
+
}
|
|
974
996
|
}
|
|
997
|
+
ctx.addIssue({
|
|
998
|
+
code: "invalid_type",
|
|
999
|
+
expected: "custom",
|
|
1000
|
+
message: "Value does not match any schema"
|
|
1001
|
+
});
|
|
975
1002
|
}).meta({
|
|
976
1003
|
description: "Value that matches exactly one of the possible schema types (TextValue, DateValue, DateRangeFieldValue). The best matching schema is chosen by priority."
|
|
977
1004
|
});
|
|
@@ -1281,6 +1308,9 @@ var FlagConfig = z15.object({
|
|
|
1281
1308
|
"Indicates if this flag expects an action to be performed to be cleared."
|
|
1282
1309
|
),
|
|
1283
1310
|
label: TranslationConfig.describe("Human readable label of the flag.")
|
|
1311
|
+
}).meta({
|
|
1312
|
+
description: "Flag configuration",
|
|
1313
|
+
id: "FlagConfig"
|
|
1284
1314
|
});
|
|
1285
1315
|
var ActionFlagConfig = z15.object({
|
|
1286
1316
|
id: Flag,
|
|
@@ -1288,6 +1318,9 @@ var ActionFlagConfig = z15.object({
|
|
|
1288
1318
|
conditional: Conditional.optional().describe(
|
|
1289
1319
|
"When conditional is met, the operation is performed on the flag. If not provided, the operation is performed unconditionally."
|
|
1290
1320
|
)
|
|
1321
|
+
}).meta({
|
|
1322
|
+
description: "Action flag configuration",
|
|
1323
|
+
id: "ActionFlagConfig"
|
|
1291
1324
|
});
|
|
1292
1325
|
|
|
1293
1326
|
// ../commons/src/events/EventMetadata.ts
|
|
@@ -1309,8 +1342,7 @@ var ActionCreationMetadata = z16.object({
|
|
|
1309
1342
|
),
|
|
1310
1343
|
createdByUserType: z16.enum(["user", "system"]).nullish().describe("Whether the user is a normal user or a system."),
|
|
1311
1344
|
acceptedAt: z16.iso.datetime().describe("Timestamp when the action request was accepted."),
|
|
1312
|
-
createdByRole: z16.string().optional().describe("Role of the user at the time of action request creation.")
|
|
1313
|
-
createdBySignature: z16.string().nullish().describe("Signature of the user who created the action request.")
|
|
1345
|
+
createdByRole: z16.string().optional().describe("Role of the user at the time of action request creation.")
|
|
1314
1346
|
});
|
|
1315
1347
|
var RegistrationCreationMetadata = ActionCreationMetadata.extend({
|
|
1316
1348
|
registrationNumber: z16.string().describe(
|
|
@@ -1338,9 +1370,6 @@ var EventMetadata = z16.object({
|
|
|
1338
1370
|
createdAtLocation: UUID.nullish().describe(
|
|
1339
1371
|
"Location of the user who created the event."
|
|
1340
1372
|
),
|
|
1341
|
-
createdBySignature: DocumentPath.nullish().describe(
|
|
1342
|
-
"Signature of the user who created the event."
|
|
1343
|
-
),
|
|
1344
1373
|
updatedAtLocation: UUID.nullish().describe(
|
|
1345
1374
|
"Location of the user who last changed the status."
|
|
1346
1375
|
),
|
|
@@ -1633,7 +1662,7 @@ var FieldId = import_v43.default.string().superRefine((val, ctx) => {
|
|
|
1633
1662
|
}
|
|
1634
1663
|
}).describe("Unique identifier for the field");
|
|
1635
1664
|
var FieldReference = import_v43.default.object({
|
|
1636
|
-
$$field: FieldId,
|
|
1665
|
+
$$field: FieldId.describe("Id of the field to reference"),
|
|
1637
1666
|
$$subfield: import_v43.default.array(import_v43.default.string()).optional().default([]).describe(
|
|
1638
1667
|
'If the FieldValue is an object, subfield can be used to refer to e.g. `["foo", "bar"]` in `{ foo: { bar: 3 } }`'
|
|
1639
1668
|
)
|
|
@@ -2346,10 +2375,10 @@ var VerificationPageConfig = FormPageConfig.extend({
|
|
|
2346
2375
|
type: z21.literal(PageTypes.enum.VERIFICATION),
|
|
2347
2376
|
actions: VerificationActionConfig
|
|
2348
2377
|
});
|
|
2349
|
-
var PageConfig = z21.discriminatedUnion("type", [
|
|
2350
|
-
|
|
2351
|
-
|
|
2352
|
-
|
|
2378
|
+
var PageConfig = z21.discriminatedUnion("type", [FormPageConfig, VerificationPageConfig]).meta({
|
|
2379
|
+
description: "Page configuration",
|
|
2380
|
+
id: "PageConfig"
|
|
2381
|
+
});
|
|
2353
2382
|
|
|
2354
2383
|
// ../commons/src/events/FormConfig.ts
|
|
2355
2384
|
var DeclarationFormConfig = z22.object({
|
|
@@ -3649,7 +3678,7 @@ var _EventConfigBase = z33.object({
|
|
|
3649
3678
|
),
|
|
3650
3679
|
label: TranslationConfig.describe("Human-readable label for the event type."),
|
|
3651
3680
|
actions: z33.array(ActionConfig).describe(
|
|
3652
|
-
"Configuration of
|
|
3681
|
+
"Configuration of core and custom actions associated with the event."
|
|
3653
3682
|
),
|
|
3654
3683
|
actionOrder: z33.array(z33.string()).optional().describe(
|
|
3655
3684
|
"Order of actions in the action menu. Use either the action type for core actions or the customActionType for custom actions."
|
|
@@ -3661,7 +3690,7 @@ var _EventConfigBase = z33.object({
|
|
|
3661
3690
|
"Configuration of fields available in the advanced search feature."
|
|
3662
3691
|
),
|
|
3663
3692
|
flags: z33.array(FlagConfig).optional().default([]).describe(
|
|
3664
|
-
"Configuration of flags associated with the actions of this event type."
|
|
3693
|
+
"Configuration of custom flags associated with the actions of this event type."
|
|
3665
3694
|
),
|
|
3666
3695
|
analytics: z33.boolean().optional().default(true).describe(
|
|
3667
3696
|
"Indicates whether the records of this event type are included in analytics"
|
|
@@ -4099,18 +4128,11 @@ var WorkqueueConfigWithoutQuery = WorkqueueConfig.omit({
|
|
|
4099
4128
|
query: true,
|
|
4100
4129
|
columns: true
|
|
4101
4130
|
});
|
|
4102
|
-
var WorkqueueConfigInput =
|
|
4103
|
-
|
|
4104
|
-
|
|
4105
|
-
|
|
4106
|
-
|
|
4107
|
-
query: CountryConfigQueryInputType,
|
|
4108
|
-
action: z37.object({ type: WorkqueueActionType }).optional().describe(
|
|
4109
|
-
"Workqueue call-to-action button configuration. This determines the quick action button shown on each event card and the action taken when the button is clicked."
|
|
4110
|
-
),
|
|
4111
|
-
columns: z37.array(WorkqueueColumn).default(mandatoryColumns),
|
|
4112
|
-
icon: AvailableIcons,
|
|
4113
|
-
emptyMessage: TranslationConfig.optional()
|
|
4131
|
+
var WorkqueueConfigInput = WorkqueueConfig.extend({
|
|
4132
|
+
query: CountryConfigQueryInputType
|
|
4133
|
+
}).meta({
|
|
4134
|
+
description: "Workqueue configuration",
|
|
4135
|
+
id: "WorkqueueConfig"
|
|
4114
4136
|
});
|
|
4115
4137
|
var WorkqueueCountInput = z37.array(
|
|
4116
4138
|
z37.object({ slug: z37.string(), query: QueryType })
|
|
@@ -4150,6 +4172,9 @@ var BaseActionInput = z38.object({
|
|
|
4150
4172
|
originalActionId: UUID.optional(),
|
|
4151
4173
|
// should not be part of base action.
|
|
4152
4174
|
keepAssignment: z38.boolean().optional(),
|
|
4175
|
+
keepAssignmentIfAccepted: z38.boolean().optional(),
|
|
4176
|
+
keepAssignmentIfRejected: z38.boolean().optional(),
|
|
4177
|
+
waitFor: z38.boolean().optional(),
|
|
4153
4178
|
// For normal users, the createdAtLocation is resolved on the backend from the user's primaryOfficeId.
|
|
4154
4179
|
// @TODO: createdAtLocation should be limited to actions that system users can perform. For normal users, it should not be part of the base action.
|
|
4155
4180
|
createdAtLocation: UUID.nullish().describe(
|
package/dist/scopes/index.d.ts
CHANGED
|
@@ -41,6 +41,7 @@ declare const AllScopeOptions: z.ZodObject<{
|
|
|
41
41
|
location: "location";
|
|
42
42
|
all: "all";
|
|
43
43
|
}>>;
|
|
44
|
+
role: z.ZodOptional<z.ZodPipe<z.ZodTransform<({} | null)[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>>;
|
|
44
45
|
event: z.ZodPipe<z.ZodTransform<({} | null)[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
45
46
|
placeOfEvent: z.ZodOptional<z.ZodEnum<{
|
|
46
47
|
administrativeArea: "administrativeArea";
|
|
@@ -66,6 +67,7 @@ declare const AllScopeOptions: z.ZodObject<{
|
|
|
66
67
|
}, z.core.$strip>;
|
|
67
68
|
type AllScopeOptions = z.infer<typeof AllScopeOptions>;
|
|
68
69
|
export declare const ScopeOptionKey: z.ZodEnum<{
|
|
70
|
+
role: "role";
|
|
69
71
|
event: "event";
|
|
70
72
|
placeOfEvent: "placeOfEvent";
|
|
71
73
|
declaredIn: "declaredIn";
|
|
@@ -220,6 +222,56 @@ export declare const RecordScopeV2: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
220
222
|
templates: z.ZodPipe<z.ZodTransform<({} | null)[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>;
|
|
221
223
|
}, z.core.$strip>>;
|
|
222
224
|
}, z.core.$strip>], "type">;
|
|
225
|
+
declare const SystemScopeType: z.ZodEnum<{
|
|
226
|
+
"organisation.read-locations": "organisation.read-locations";
|
|
227
|
+
"user.read": "user.read";
|
|
228
|
+
"user.create": "user.create";
|
|
229
|
+
"user.edit": "user.edit";
|
|
230
|
+
"user.search": "user.search";
|
|
231
|
+
}>;
|
|
232
|
+
export type SystemScopeType = z.infer<typeof SystemScopeType>;
|
|
233
|
+
declare const UserScopeType: z.ZodEnum<{
|
|
234
|
+
"user.read": "user.read";
|
|
235
|
+
"user.create": "user.create";
|
|
236
|
+
"user.edit": "user.edit";
|
|
237
|
+
"user.search": "user.search";
|
|
238
|
+
}>;
|
|
239
|
+
export type UserScopeType = z.infer<typeof UserScopeType>;
|
|
240
|
+
declare const ScopesWithRoleOption: z.ZodEnum<{
|
|
241
|
+
"user.create": "user.create";
|
|
242
|
+
"user.edit": "user.edit";
|
|
243
|
+
}>;
|
|
244
|
+
export type ScopesWithRoleOption = z.infer<typeof ScopesWithRoleOption>;
|
|
245
|
+
export declare const UserScopeV2: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
246
|
+
type: z.ZodEnum<{
|
|
247
|
+
"user.create": "user.create";
|
|
248
|
+
"user.edit": "user.edit";
|
|
249
|
+
}>;
|
|
250
|
+
options: z.ZodOptional<z.ZodObject<{
|
|
251
|
+
accessLevel: z.ZodOptional<z.ZodEnum<{
|
|
252
|
+
administrativeArea: "administrativeArea";
|
|
253
|
+
location: "location";
|
|
254
|
+
all: "all";
|
|
255
|
+
}>>;
|
|
256
|
+
role: z.ZodOptional<z.ZodPipe<z.ZodTransform<({} | null)[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>>;
|
|
257
|
+
}, z.core.$strip>>;
|
|
258
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
259
|
+
type: z.ZodEnum<{
|
|
260
|
+
"user.read": "user.read";
|
|
261
|
+
"user.search": "user.search";
|
|
262
|
+
}>;
|
|
263
|
+
options: z.ZodOptional<z.ZodObject<{
|
|
264
|
+
accessLevel: z.ZodOptional<z.ZodEnum<{
|
|
265
|
+
administrativeArea: "administrativeArea";
|
|
266
|
+
location: "location";
|
|
267
|
+
all: "all";
|
|
268
|
+
}>>;
|
|
269
|
+
}, z.core.$strip>>;
|
|
270
|
+
}, z.core.$strip>], "type">;
|
|
271
|
+
export type UserScopeV2 = z.infer<typeof UserScopeV2>;
|
|
272
|
+
export declare function scopeUsesRoleOptions(scope: UserScopeV2): scope is Extract<UserScopeV2, {
|
|
273
|
+
type: ScopesWithRoleOption;
|
|
274
|
+
}>;
|
|
223
275
|
export declare function scopeUsesDeclaredOptions(scope: Scope): scope is Extract<Scope, {
|
|
224
276
|
type: z.infer<typeof ScopesWithDeclaredOptions>;
|
|
225
277
|
}>;
|
|
@@ -286,13 +338,6 @@ export declare const ResolvedRecordScopeV2: z.ZodDiscriminatedUnion<[z.ZodObject
|
|
|
286
338
|
}, z.core.$strip>], "type">;
|
|
287
339
|
export type RecordScopeV2 = z.infer<typeof RecordScopeV2>;
|
|
288
340
|
export type ResolvedRecordScopeV2 = z.infer<typeof ResolvedRecordScopeV2>;
|
|
289
|
-
declare const SystemScopeType: z.ZodEnum<{
|
|
290
|
-
"organisation.read-locations": "organisation.read-locations";
|
|
291
|
-
"user.read": "user.read";
|
|
292
|
-
"user.create": "user.create";
|
|
293
|
-
"user.edit": "user.edit";
|
|
294
|
-
}>;
|
|
295
|
-
export type SystemScopeType = z.infer<typeof SystemScopeType>;
|
|
296
341
|
/** The primary scope schema which gathers all scope types together. All scopes are discriminated by type and options are determined according to the type. */
|
|
297
342
|
export declare const Scope: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
298
343
|
type: z.ZodEnum<{
|
|
@@ -437,11 +482,31 @@ export declare const Scope: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
437
482
|
}, z.core.$strip>>;
|
|
438
483
|
}, z.core.$strip>, z.ZodObject<{
|
|
439
484
|
type: z.ZodEnum<{
|
|
440
|
-
"organisation.read-locations": "organisation.read-locations";
|
|
441
|
-
"user.read": "user.read";
|
|
442
485
|
"user.create": "user.create";
|
|
443
486
|
"user.edit": "user.edit";
|
|
444
487
|
}>;
|
|
488
|
+
options: z.ZodOptional<z.ZodObject<{
|
|
489
|
+
accessLevel: z.ZodOptional<z.ZodEnum<{
|
|
490
|
+
administrativeArea: "administrativeArea";
|
|
491
|
+
location: "location";
|
|
492
|
+
all: "all";
|
|
493
|
+
}>>;
|
|
494
|
+
role: z.ZodOptional<z.ZodPipe<z.ZodTransform<({} | null)[] | undefined, unknown>, z.ZodOptional<z.ZodArray<z.ZodString>>>>;
|
|
495
|
+
}, z.core.$strip>>;
|
|
496
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
497
|
+
type: z.ZodEnum<{
|
|
498
|
+
"user.read": "user.read";
|
|
499
|
+
"user.search": "user.search";
|
|
500
|
+
}>;
|
|
501
|
+
options: z.ZodOptional<z.ZodObject<{
|
|
502
|
+
accessLevel: z.ZodOptional<z.ZodEnum<{
|
|
503
|
+
administrativeArea: "administrativeArea";
|
|
504
|
+
location: "location";
|
|
505
|
+
all: "all";
|
|
506
|
+
}>>;
|
|
507
|
+
}, z.core.$strip>>;
|
|
508
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
509
|
+
type: z.ZodLiteral<"organisation.read-locations">;
|
|
445
510
|
options: z.ZodOptional<z.ZodObject<{
|
|
446
511
|
accessLevel: z.ZodOptional<z.ZodEnum<{
|
|
447
512
|
administrativeArea: "administrativeArea";
|
|
@@ -495,6 +560,7 @@ export declare const ScopeType: z.ZodEnum<{
|
|
|
495
560
|
"user.read": "user.read";
|
|
496
561
|
"user.create": "user.create";
|
|
497
562
|
"user.edit": "user.edit";
|
|
563
|
+
"user.search": "user.search";
|
|
498
564
|
workqueue: "workqueue";
|
|
499
565
|
"dashboard.view": "dashboard.view";
|
|
500
566
|
}>;
|
|
@@ -567,10 +633,21 @@ export declare const decodeScope: (query: EncodedScope) => {
|
|
|
567
633
|
registeredBy?: "user" | undefined;
|
|
568
634
|
templates?: string[] | undefined;
|
|
569
635
|
} | undefined;
|
|
636
|
+
} | {
|
|
637
|
+
type: "user.create" | "user.edit";
|
|
638
|
+
options?: {
|
|
639
|
+
accessLevel?: "administrativeArea" | "location" | "all" | undefined;
|
|
640
|
+
role?: string[] | undefined;
|
|
641
|
+
} | undefined;
|
|
642
|
+
} | {
|
|
643
|
+
type: "user.read" | "user.search";
|
|
644
|
+
options?: {
|
|
645
|
+
accessLevel?: "administrativeArea" | "location" | "all" | undefined;
|
|
646
|
+
} | undefined;
|
|
570
647
|
} | {
|
|
571
648
|
type: "bypassratelimit" | "record.reindex" | "user.data-seeding" | "integration.create" | "record.import" | "config.update-all" | "attachment.upload" | "profile.electronic-signature" | "user.read-only-my-audit" | "performance.read" | "performance.read-dashboards" | "performance.vital-statistics-export" | "record.confirm-registration" | "record.reject-registration";
|
|
572
649
|
} | {
|
|
573
|
-
type: "organisation.read-locations"
|
|
650
|
+
type: "organisation.read-locations";
|
|
574
651
|
options?: {
|
|
575
652
|
accessLevel?: "administrativeArea" | "location" | "all" | undefined;
|
|
576
653
|
} | undefined;
|
package/dist/scopes/index.js
CHANGED
|
@@ -42,6 +42,7 @@ __export(scopes_exports, {
|
|
|
42
42
|
ScopesWithFullOptions: () => ScopesWithFullOptions,
|
|
43
43
|
ScopesWithPlaceEventOptions: () => ScopesWithPlaceEventOptions,
|
|
44
44
|
UserFilter: () => UserFilter,
|
|
45
|
+
UserScopeV2: () => UserScopeV2,
|
|
45
46
|
canUserCreateEvent: () => canUserCreateEvent,
|
|
46
47
|
decodeScope: () => decodeScope,
|
|
47
48
|
defineRoles: () => defineRoles,
|
|
@@ -54,7 +55,8 @@ __export(scopes_exports, {
|
|
|
54
55
|
isCustomActionScope: () => isCustomActionScope,
|
|
55
56
|
scopeUsesDeclaredOptions: () => scopeUsesDeclaredOptions,
|
|
56
57
|
scopeUsesFullOptions: () => scopeUsesFullOptions,
|
|
57
|
-
scopeUsesPrintCertifiedCopiesOptions: () => scopeUsesPrintCertifiedCopiesOptions
|
|
58
|
+
scopeUsesPrintCertifiedCopiesOptions: () => scopeUsesPrintCertifiedCopiesOptions,
|
|
59
|
+
scopeUsesRoleOptions: () => scopeUsesRoleOptions
|
|
58
60
|
});
|
|
59
61
|
module.exports = __toCommonJS(scopes_exports);
|
|
60
62
|
var z4 = __toESM(require("zod/v4"));
|
|
@@ -139,6 +141,10 @@ var scopeByEvent = z3.preprocess(
|
|
|
139
141
|
(val) => val === void 0 ? void 0 : [val].flat(),
|
|
140
142
|
z3.array(z3.string()).optional()
|
|
141
143
|
).describe("Event type, e.g. birth, death");
|
|
144
|
+
var userRole = z3.preprocess(
|
|
145
|
+
(val) => val === void 0 ? void 0 : [val].flat(),
|
|
146
|
+
z3.array(z3.string()).optional()
|
|
147
|
+
).describe("User role, e.g. admin, field agent");
|
|
142
148
|
var scopeOptionsPlaceEvent = z3.object({
|
|
143
149
|
event: scopeByEvent,
|
|
144
150
|
placeOfEvent: JurisdictionFilter.optional()
|
|
@@ -162,6 +168,9 @@ var CustomActionScopeOptions = AllRecordScopeOptions.extend({
|
|
|
162
168
|
var AccessLevelOptions = z3.object({
|
|
163
169
|
accessLevel: JurisdictionFilter.optional()
|
|
164
170
|
});
|
|
171
|
+
var AllUserScopeOptions = AccessLevelOptions.extend({
|
|
172
|
+
role: userRole.optional()
|
|
173
|
+
});
|
|
165
174
|
var WorkqueueOrDashboardOptions = z3.object({
|
|
166
175
|
ids: z3.preprocess(
|
|
167
176
|
(val) => val === void 0 ? void 0 : [val].flat(),
|
|
@@ -171,6 +180,7 @@ var WorkqueueOrDashboardOptions = z3.object({
|
|
|
171
180
|
var AllScopeOptions = z3.object({
|
|
172
181
|
...AllRecordScopeOptions.shape,
|
|
173
182
|
...AccessLevelOptions.shape,
|
|
183
|
+
...AllUserScopeOptions.shape,
|
|
174
184
|
...WorkqueueOrDashboardOptions.shape
|
|
175
185
|
});
|
|
176
186
|
var ScopeOptionKey = AllScopeOptions.keyof();
|
|
@@ -243,6 +253,33 @@ var RecordScopeV2 = z3.discriminatedUnion("type", [
|
|
|
243
253
|
]).describe(
|
|
244
254
|
"Scopes used to check user's permission to perform actions on a record."
|
|
245
255
|
);
|
|
256
|
+
var SystemScopeType = z3.enum([
|
|
257
|
+
"organisation.read-locations",
|
|
258
|
+
"user.read",
|
|
259
|
+
"user.create",
|
|
260
|
+
"user.edit",
|
|
261
|
+
"user.search"
|
|
262
|
+
]);
|
|
263
|
+
var UserScopeType = SystemScopeType.extract([
|
|
264
|
+
"user.read",
|
|
265
|
+
"user.create",
|
|
266
|
+
"user.edit",
|
|
267
|
+
"user.search"
|
|
268
|
+
]);
|
|
269
|
+
var ScopesWithRoleOption = UserScopeType.extract(["user.edit", "user.create"]);
|
|
270
|
+
var UserScopeV2 = z3.discriminatedUnion("type", [
|
|
271
|
+
z3.object({
|
|
272
|
+
type: ScopesWithRoleOption,
|
|
273
|
+
options: AllUserScopeOptions.optional()
|
|
274
|
+
}),
|
|
275
|
+
z3.object({
|
|
276
|
+
type: UserScopeType.extract(["user.read", "user.search"]),
|
|
277
|
+
options: AccessLevelOptions.optional()
|
|
278
|
+
})
|
|
279
|
+
]);
|
|
280
|
+
function scopeUsesRoleOptions(scope) {
|
|
281
|
+
return ScopesWithRoleOption?.options.some((opt) => opt === scope.type);
|
|
282
|
+
}
|
|
246
283
|
function scopeUsesDeclaredOptions(scope) {
|
|
247
284
|
return !ScopesWithPlaceEventOptions.options.some((opt) => opt === scope.type);
|
|
248
285
|
}
|
|
@@ -275,16 +312,14 @@ var ResolvedRecordScopeV2 = z3.discriminatedUnion("type", [
|
|
|
275
312
|
}).optional()
|
|
276
313
|
})
|
|
277
314
|
]).describe("Resolved scope with location/user IDs instead of filters.");
|
|
278
|
-
var SystemScopeType = z3.enum([
|
|
279
|
-
"organisation.read-locations",
|
|
280
|
-
"user.read",
|
|
281
|
-
"user.create",
|
|
282
|
-
"user.edit"
|
|
283
|
-
]);
|
|
284
315
|
var Scope2 = z3.discriminatedUnion("type", [
|
|
285
316
|
z3.object({ type: PlainScopeType }),
|
|
286
317
|
...RecordScopeV2.options,
|
|
287
|
-
|
|
318
|
+
...UserScopeV2.options,
|
|
319
|
+
z3.object({
|
|
320
|
+
type: z3.literal("organisation.read-locations"),
|
|
321
|
+
options: AccessLevelOptions.optional()
|
|
322
|
+
}),
|
|
288
323
|
z3.object({
|
|
289
324
|
type: z3.literal("workqueue"),
|
|
290
325
|
options: WorkqueueOrDashboardOptions
|
|
@@ -330,7 +365,9 @@ var decodeScope = (query) => {
|
|
|
330
365
|
};
|
|
331
366
|
var DEFAULT_SCOPE_OPTIONS = {
|
|
332
367
|
placeOfEvent: JurisdictionFilter.enum.all,
|
|
333
|
-
accessLevel: JurisdictionFilter.enum.all
|
|
368
|
+
accessLevel: JurisdictionFilter.enum.all,
|
|
369
|
+
registeredIn: JurisdictionFilter.enum.all,
|
|
370
|
+
declaredIn: JurisdictionFilter.enum.all
|
|
334
371
|
};
|
|
335
372
|
function getScopeOptionValue(scope, option) {
|
|
336
373
|
const options = "options" in scope ? scope.options : void 0;
|
|
Binary file
|
package/package.json
CHANGED
package/tsconfig.tsbuildinfo
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["./src/cli.ts","./src/api/index.ts","./src/application-config/index.ts","./src/conditionals/index.ts","./src/events/deduplication.ts","./src/events/index.ts","./src/migrations/v2.0/add-birth-certificate-issuance-flag.ts","./src/migrations/v2.0/add-resend-invite-notification.ts","./src/migrations/v2.0/checkout-upstream-files.ts","./src/migrations/v2.0/convert-config-files-to-ts.ts","./src/migrations/v2.0/convert-paragraph-to-heading.ts","./src/migrations/v2.0/create-events-index.ts","./src/migrations/v2.0/delete-infrastructure-directory.ts","./src/migrations/v2.0/index.ts","./src/migrations/v2.0/make-built-in-validate-actions-custom.ts","./src/migrations/v2.0/merge-infrastructure-directory.ts","./src/migrations/v2.0/migrate-application-config-url.ts","./src/migrations/v2.0/migrate-scopes.ts","./src/migrations/v2.0/migrate-validated-workqueue-status-to-flag.ts","./src/migrations/v2.0/migrate-workqueue-configs.ts","./src/migrations/v2.0/remove-delete-actions.ts","./src/migrations/v2.0/remove-demo-scope.ts","./src/migrations/v2.0/remove-deprecated-imports.ts","./src/migrations/v2.0/remove-fhir-url-helpers.ts","./src/migrations/v2.0/remove-hearth-migrations.ts","./src/migrations/v2.0/remove-old-statistics-service.ts","./src/migrations/v2.0/remove-pending-certification-flag.ts","./src/migrations/v2.0/remove-review-from-register-action.ts","./src/migrations/v2.0/remove-unused-environment-variables.ts","./src/migrations/v2.0/rename-api-paths.ts","./src/migrations/v2.0/rename-location-parent-id.ts","./src/migrations/v2.0/simplify-analytics-precalculations.ts","./src/migrations/v2.0/update-package-json.ts","./src/notification/index.ts","./src/scopes/index.ts"],"version":"5.6.3"}
|
|
1
|
+
{"root":["./src/cli.ts","./src/api/index.ts","./src/application-config/index.ts","./src/conditionals/index.ts","./src/events/deduplication.ts","./src/events/index.ts","./src/migrations/v2.0/add-birth-certificate-issuance-flag.ts","./src/migrations/v2.0/add-resend-invite-notification.ts","./src/migrations/v2.0/checkout-upstream-files.ts","./src/migrations/v2.0/convert-config-files-to-ts.ts","./src/migrations/v2.0/convert-paragraph-to-heading.ts","./src/migrations/v2.0/create-events-index.ts","./src/migrations/v2.0/delete-infrastructure-directory.ts","./src/migrations/v2.0/fix-accept-requested-registration-function-type.ts","./src/migrations/v2.0/index.ts","./src/migrations/v2.0/make-built-in-validate-actions-custom.ts","./src/migrations/v2.0/merge-infrastructure-directory.ts","./src/migrations/v2.0/migrate-application-config-url.ts","./src/migrations/v2.0/migrate-scopes.ts","./src/migrations/v2.0/migrate-validated-workqueue-status-to-flag.ts","./src/migrations/v2.0/migrate-workqueue-configs.ts","./src/migrations/v2.0/remove-delete-actions.ts","./src/migrations/v2.0/remove-demo-scope.ts","./src/migrations/v2.0/remove-deprecated-imports.ts","./src/migrations/v2.0/remove-fhir-url-helpers.ts","./src/migrations/v2.0/remove-hearth-migrations.ts","./src/migrations/v2.0/remove-old-statistics-service.ts","./src/migrations/v2.0/remove-pending-certification-flag.ts","./src/migrations/v2.0/remove-review-from-register-action.ts","./src/migrations/v2.0/remove-unused-environment-variables.ts","./src/migrations/v2.0/rename-api-paths.ts","./src/migrations/v2.0/rename-location-parent-id.ts","./src/migrations/v2.0/simplify-analytics-precalculations.ts","./src/migrations/v2.0/update-package-json.ts","./src/notification/index.ts","./src/scopes/index.ts"],"version":"5.6.3"}
|
|
Binary file
|