@opencrvs/toolkit 1.9.4-rc.793f834 → 1.9.4-rc.f09603b
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 +28204 -2149
- package/dist/commons/conditionals/conditionals.d.ts +10 -1
- package/dist/commons/conditionals/validate.d.ts +11 -4
- package/dist/commons/events/ActionConfig.d.ts +23416 -1552
- package/dist/commons/events/ActionDocument.d.ts +803 -1856
- package/dist/commons/events/ActionInput.d.ts +277 -1073
- package/dist/commons/events/ActionType.d.ts +86 -9
- package/dist/commons/events/AdvancedSearchConfig.d.ts +228 -1238
- package/dist/commons/events/CompositeFieldValue.d.ts +27 -176
- package/dist/commons/events/Conditional.d.ts +26 -38
- package/dist/commons/events/Constants.d.ts +1 -1
- package/dist/commons/events/CountryConfigQueryInput.d.ts +931 -4169
- package/dist/commons/events/CreatedAtLocation.d.ts +1 -1
- package/dist/commons/events/DeduplicationConfig.d.ts +15 -150
- package/dist/commons/events/Draft.d.ts +70 -105
- package/dist/commons/events/DynamicFieldValue.d.ts +7 -91
- package/dist/commons/events/EventConfig.d.ts +18663 -2120
- package/dist/commons/events/EventConfigInput.d.ts +1 -1
- package/dist/commons/events/EventDocument.d.ts +320 -1332
- package/dist/commons/events/EventIndex.d.ts +197 -967
- package/dist/commons/events/EventInput.d.ts +2 -8
- package/dist/commons/events/EventMetadata.d.ts +106 -346
- package/dist/commons/events/FieldConfig.d.ts +4267 -11782
- package/dist/commons/events/FieldType.d.ts +20 -4
- package/dist/commons/events/FieldTypeMapping.d.ts +181 -813
- package/dist/commons/events/FieldValue.d.ts +83 -356
- package/dist/commons/events/Flag.d.ts +70 -0
- package/dist/commons/events/FormConfig.d.ts +13140 -721
- package/dist/commons/events/PageConfig.d.ts +8780 -319
- package/dist/commons/events/SummaryConfig.d.ts +14 -161
- package/dist/commons/events/TemplateConfig.d.ts +3 -3
- package/dist/commons/events/TranslationConfig.d.ts +2 -2
- package/dist/commons/events/WorkqueueColumnConfig.d.ts +74 -37
- package/dist/commons/events/WorkqueueConfig.d.ts +1691 -7156
- package/dist/commons/events/deduplication.d.ts +3 -3
- package/dist/commons/events/defineConfig.d.ts +25626 -150
- package/dist/commons/events/event.d.ts +4 -4
- package/dist/commons/events/index.d.ts +1 -0
- package/dist/commons/events/locations.d.ts +15 -19
- package/dist/commons/events/scopes.d.ts +5 -4
- package/dist/commons/events/state/availableActions.d.ts +2 -1
- package/dist/commons/events/state/flags.d.ts +21 -3
- package/dist/commons/events/state/index.d.ts +23 -19
- package/dist/commons/events/state/utils.d.ts +130 -112
- package/dist/commons/events/test.utils.d.ts +17 -8
- package/dist/commons/events/transactions.d.ts +1 -1
- package/dist/commons/events/utils.d.ts +51339 -362
- package/dist/commons/notification/UserNotifications.d.ts +55 -636
- package/dist/conditionals/index.d.ts.map +1 -1
- package/dist/conditionals/index.js +38 -5
- package/dist/events/deduplication.d.ts +3 -3
- package/dist/events/index.js +1810 -1550
- package/dist/notification/index.d.ts.map +1 -1
- package/dist/notification/index.js +1430 -1412
- package/dist/scopes/index.d.ts +167 -132
- package/dist/scopes/index.d.ts.map +1 -1
- package/dist/scopes/index.js +133 -94
- package/package.json +5 -5
package/dist/scopes/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,17 +17,28 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
29
|
|
|
20
30
|
// src/scopes/index.ts
|
|
21
31
|
var scopes_exports = {};
|
|
22
32
|
__export(scopes_exports, {
|
|
23
33
|
ActionScopes: () => ActionScopes,
|
|
34
|
+
ConfigurableActionScopes: () => ConfigurableActionScopes,
|
|
35
|
+
CustomActionScope: () => CustomActionScope,
|
|
24
36
|
RecordScope: () => RecordScope,
|
|
25
37
|
RecordScopeType: () => RecordScopeType,
|
|
26
38
|
SCOPES: () => SCOPES,
|
|
27
39
|
SearchScopes: () => SearchScopes,
|
|
28
40
|
findScope: () => findScope,
|
|
41
|
+
findScopes: () => findScopes,
|
|
29
42
|
getAuthorizedEventsFromScopes: () => getAuthorizedEventsFromScopes,
|
|
30
43
|
parseConfigurableScope: () => parseConfigurableScope,
|
|
31
44
|
parseLiteralScope: () => parseLiteralScope,
|
|
@@ -33,9 +46,10 @@ __export(scopes_exports, {
|
|
|
33
46
|
stringifyScope: () => stringifyScope
|
|
34
47
|
});
|
|
35
48
|
module.exports = __toCommonJS(scopes_exports);
|
|
49
|
+
var z2 = __toESM(require("zod/v4"));
|
|
36
50
|
|
|
37
51
|
// ../commons/src/scopes.ts
|
|
38
|
-
var
|
|
52
|
+
var z = __toESM(require("zod/v4"));
|
|
39
53
|
var SCOPES = {
|
|
40
54
|
// TODO v1.8 legacy scopes
|
|
41
55
|
BYPASSRATELIMIT: "bypassratelimit",
|
|
@@ -114,91 +128,91 @@ var SCOPES = {
|
|
|
114
128
|
// data seeding
|
|
115
129
|
USER_DATA_SEEDING: "user.data-seeding"
|
|
116
130
|
};
|
|
117
|
-
var LegacyScopes =
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
131
|
+
var LegacyScopes = z.union([
|
|
132
|
+
z.literal(SCOPES.BYPASSRATELIMIT),
|
|
133
|
+
z.literal(SCOPES.REGISTER),
|
|
134
|
+
z.literal(SCOPES.DEMO),
|
|
135
|
+
z.literal(SCOPES.CONFIG)
|
|
122
136
|
]);
|
|
123
|
-
var IntegrationScopes =
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
137
|
+
var IntegrationScopes = z.union([
|
|
138
|
+
z.literal(SCOPES.WEBHOOK),
|
|
139
|
+
z.literal(SCOPES.NATIONALID),
|
|
140
|
+
z.literal(SCOPES.NOTIFICATION_API),
|
|
141
|
+
z.literal(SCOPES.RECORDSEARCH)
|
|
128
142
|
]);
|
|
129
|
-
var InternalOperationsScopes =
|
|
130
|
-
|
|
131
|
-
|
|
143
|
+
var InternalOperationsScopes = z.union([
|
|
144
|
+
z.literal(SCOPES.RECORD_REINDEX),
|
|
145
|
+
z.literal(SCOPES.RECORD_IMPORT)
|
|
132
146
|
]);
|
|
133
|
-
var DeclareScopes =
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
147
|
+
var DeclareScopes = z.union([
|
|
148
|
+
z.literal(SCOPES.RECORD_DECLARE_BIRTH),
|
|
149
|
+
z.literal(SCOPES.RECORD_DECLARE_BIRTH_MY_JURISDICTION),
|
|
150
|
+
z.literal(SCOPES.RECORD_DECLARE_DEATH),
|
|
151
|
+
z.literal(SCOPES.RECORD_DECLARE_DEATH_MY_JURISDICTION),
|
|
152
|
+
z.literal(SCOPES.RECORD_DECLARE_MARRIAGE),
|
|
153
|
+
z.literal(SCOPES.RECORD_DECLARE_MARRIAGE_MY_JURISDICTION),
|
|
154
|
+
z.literal(SCOPES.RECORD_SUBMIT_INCOMPLETE),
|
|
155
|
+
z.literal(SCOPES.RECORD_SUBMIT_FOR_REVIEW)
|
|
142
156
|
]);
|
|
143
|
-
var UnassignScope =
|
|
144
|
-
var ValidateScopes =
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
157
|
+
var UnassignScope = z.literal(SCOPES.RECORD_UNASSIGN_OTHERS);
|
|
158
|
+
var ValidateScopes = z.union([
|
|
159
|
+
z.literal(SCOPES.RECORD_SUBMIT_FOR_APPROVAL),
|
|
160
|
+
z.literal(SCOPES.RECORD_SUBMIT_FOR_UPDATES),
|
|
161
|
+
z.literal(SCOPES.RECORD_DECLARATION_EDIT),
|
|
162
|
+
z.literal(SCOPES.RECORD_REVIEW_DUPLICATES),
|
|
163
|
+
z.literal(SCOPES.RECORD_DECLARATION_ARCHIVE),
|
|
164
|
+
z.literal(SCOPES.RECORD_DECLARATION_REINSTATE)
|
|
151
165
|
]);
|
|
152
|
-
var RegisterScope =
|
|
153
|
-
var CorrectionScopes =
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
166
|
+
var RegisterScope = z.literal(SCOPES.RECORD_REGISTER);
|
|
167
|
+
var CorrectionScopes = z.union([
|
|
168
|
+
z.literal(SCOPES.RECORD_REGISTRATION_REQUEST_CORRECTION),
|
|
169
|
+
z.literal(SCOPES.RECORD_REGISTRATION_CORRECT),
|
|
170
|
+
z.literal(SCOPES.RECORD_CONFIRM_REGISTRATION),
|
|
171
|
+
z.literal(SCOPES.RECORD_REJECT_REGISTRATION)
|
|
158
172
|
]);
|
|
159
|
-
var SearchScopes =
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
173
|
+
var SearchScopes = z.union([
|
|
174
|
+
z.literal(SCOPES.SEARCH_BIRTH_MY_JURISDICTION),
|
|
175
|
+
z.literal(SCOPES.SEARCH_BIRTH),
|
|
176
|
+
z.literal(SCOPES.SEARCH_DEATH_MY_JURISDICTION),
|
|
177
|
+
z.literal(SCOPES.SEARCH_DEATH),
|
|
178
|
+
z.literal(SCOPES.SEARCH_MARRIAGE_MY_JURISDICTION),
|
|
179
|
+
z.literal(SCOPES.SEARCH_MARRIAGE)
|
|
166
180
|
]);
|
|
167
|
-
var AuditScopes =
|
|
168
|
-
var PerformanceScopes =
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
181
|
+
var AuditScopes = z.literal(SCOPES.RECORD_READ);
|
|
182
|
+
var PerformanceScopes = z.union([
|
|
183
|
+
z.literal(SCOPES.PERFORMANCE_READ),
|
|
184
|
+
z.literal(SCOPES.PERFORMANCE_READ_DASHBOARDS),
|
|
185
|
+
z.literal(SCOPES.PERFORMANCE_EXPORT_VITAL_STATISTICS)
|
|
172
186
|
]);
|
|
173
|
-
var OrganisationScopes =
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
187
|
+
var OrganisationScopes = z.union([
|
|
188
|
+
z.literal(SCOPES.ORGANISATION_READ_LOCATIONS),
|
|
189
|
+
z.literal(SCOPES.ORGANISATION_READ_LOCATIONS_MY_OFFICE),
|
|
190
|
+
z.literal(SCOPES.ORGANISATION_READ_LOCATIONS_MY_JURISDICTION)
|
|
177
191
|
]);
|
|
178
|
-
var UserScopes =
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
192
|
+
var UserScopes = z.union([
|
|
193
|
+
z.literal(SCOPES.USER_READ),
|
|
194
|
+
z.literal(SCOPES.USER_READ_MY_OFFICE),
|
|
195
|
+
z.literal(SCOPES.USER_READ_MY_JURISDICTION),
|
|
196
|
+
z.literal(SCOPES.USER_READ_ONLY_MY_AUDIT),
|
|
197
|
+
z.literal(SCOPES.USER_CREATE),
|
|
198
|
+
z.literal(SCOPES.USER_CREATE_MY_JURISDICTION),
|
|
199
|
+
z.literal(SCOPES.USER_UPDATE),
|
|
200
|
+
z.literal(SCOPES.USER_UPDATE_MY_JURISDICTION)
|
|
187
201
|
]);
|
|
188
|
-
var ConfigScope =
|
|
189
|
-
var DataSeedingScope =
|
|
190
|
-
var LiteralScopes =
|
|
202
|
+
var ConfigScope = z.literal(SCOPES.CONFIG_UPDATE_ALL);
|
|
203
|
+
var DataSeedingScope = z.literal(SCOPES.USER_DATA_SEEDING);
|
|
204
|
+
var LiteralScopes = z.union([
|
|
191
205
|
LegacyScopes,
|
|
192
206
|
IntegrationScopes,
|
|
193
207
|
UnassignScope,
|
|
194
208
|
DeclareScopes,
|
|
195
209
|
ValidateScopes,
|
|
196
210
|
RegisterScope,
|
|
197
|
-
|
|
211
|
+
z.literal(SCOPES.RECORD_PRINT_ISSUE_CERTIFIED_COPIES),
|
|
198
212
|
CorrectionScopes,
|
|
199
213
|
SearchScopes,
|
|
200
214
|
AuditScopes,
|
|
201
|
-
|
|
215
|
+
z.literal(SCOPES.PROFILE_ELECTRONIC_SIGNATURE),
|
|
202
216
|
PerformanceScopes,
|
|
203
217
|
OrganisationScopes,
|
|
204
218
|
UserScopes,
|
|
@@ -207,38 +221,38 @@ var LiteralScopes = import_zod.z.union([
|
|
|
207
221
|
InternalOperationsScopes
|
|
208
222
|
]);
|
|
209
223
|
var rawConfigurableScopeRegex = /^([a-zA-Z][a-zA-Z0-9.-]*(?:\.[a-zA-Z0-9.-]+)*)\[((?:\w+=[\w.-]+(?:\|[\w.-]+)*)(?:,[\w]+=[\w.-]+(?:\|[\w.-]+)*)*)\]$/;
|
|
210
|
-
var rawConfigurableScope =
|
|
211
|
-
var CreateUserScope =
|
|
212
|
-
type:
|
|
213
|
-
options:
|
|
214
|
-
role:
|
|
224
|
+
var rawConfigurableScope = z.string().regex(rawConfigurableScopeRegex);
|
|
225
|
+
var CreateUserScope = z.object({
|
|
226
|
+
type: z.literal("user.create"),
|
|
227
|
+
options: z.object({
|
|
228
|
+
role: z.array(z.string())
|
|
215
229
|
})
|
|
216
230
|
});
|
|
217
|
-
var EditUserScope =
|
|
218
|
-
type:
|
|
219
|
-
options:
|
|
220
|
-
role:
|
|
231
|
+
var EditUserScope = z.object({
|
|
232
|
+
type: z.literal("user.edit"),
|
|
233
|
+
options: z.object({
|
|
234
|
+
role: z.array(z.string())
|
|
221
235
|
})
|
|
222
236
|
});
|
|
223
|
-
var WorkqueueScope =
|
|
224
|
-
type:
|
|
225
|
-
options:
|
|
226
|
-
id:
|
|
237
|
+
var WorkqueueScope = z.object({
|
|
238
|
+
type: z.literal("workqueue"),
|
|
239
|
+
options: z.object({
|
|
240
|
+
id: z.array(z.string())
|
|
227
241
|
})
|
|
228
242
|
});
|
|
229
|
-
var SearchScope =
|
|
230
|
-
type:
|
|
231
|
-
options:
|
|
232
|
-
event:
|
|
233
|
-
access:
|
|
243
|
+
var SearchScope = z.object({
|
|
244
|
+
type: z.literal("search"),
|
|
245
|
+
options: z.object({
|
|
246
|
+
event: z.array(z.string()).length(1),
|
|
247
|
+
access: z.array(z.enum(["my-jurisdiction", "all"])).length(1)
|
|
234
248
|
})
|
|
235
249
|
});
|
|
236
|
-
var RecordScopeType =
|
|
250
|
+
var RecordScopeType = z.enum([
|
|
237
251
|
"record.create",
|
|
238
252
|
"record.read",
|
|
239
253
|
"record.declare",
|
|
240
254
|
"record.notify",
|
|
241
|
-
"record.declared.
|
|
255
|
+
"record.declared.edit",
|
|
242
256
|
"record.declared.reject",
|
|
243
257
|
"record.declared.archive",
|
|
244
258
|
"record.declared.review-duplicates",
|
|
@@ -248,20 +262,33 @@ var RecordScopeType = import_zod.z.enum([
|
|
|
248
262
|
"record.registered.correct",
|
|
249
263
|
"record.unassign-others"
|
|
250
264
|
]);
|
|
251
|
-
var RecordScope =
|
|
265
|
+
var RecordScope = z.object({
|
|
252
266
|
type: RecordScopeType,
|
|
253
|
-
options:
|
|
254
|
-
event:
|
|
267
|
+
options: z.object({
|
|
268
|
+
event: z.array(z.string()).describe("Event type, e.g. birth, death")
|
|
255
269
|
})
|
|
256
270
|
}).describe(
|
|
257
271
|
"Scopes used to check user's permission to perform actions on a record."
|
|
258
272
|
);
|
|
259
|
-
var
|
|
273
|
+
var CustomActionScope = z.object({
|
|
274
|
+
type: z.literal("record.custom-action"),
|
|
275
|
+
options: z.object({
|
|
276
|
+
event: z.array(z.string()).describe("Allowed event type, e.g. birth, death"),
|
|
277
|
+
customActionType: z.array(z.string()).describe("Allowed custom action types")
|
|
278
|
+
})
|
|
279
|
+
});
|
|
280
|
+
var ConfigurableRawScopes = z.discriminatedUnion("type", [
|
|
260
281
|
SearchScope,
|
|
261
282
|
CreateUserScope,
|
|
262
283
|
EditUserScope,
|
|
263
284
|
WorkqueueScope,
|
|
264
|
-
RecordScope
|
|
285
|
+
RecordScope,
|
|
286
|
+
CustomActionScope
|
|
287
|
+
]);
|
|
288
|
+
var ConfigurableActionScopes = z.discriminatedUnion("type", [
|
|
289
|
+
// @TODO - Record scope holds non-action scopes as well e.g., `record.read`
|
|
290
|
+
RecordScope,
|
|
291
|
+
CustomActionScope
|
|
265
292
|
]);
|
|
266
293
|
function flattenAndMergeScopes(scopes2) {
|
|
267
294
|
if (scopes2.length === 0) return null;
|
|
@@ -287,6 +314,15 @@ function findScope(scopes2, scopeType) {
|
|
|
287
314
|
(scope) => scope?.type === scopeType
|
|
288
315
|
);
|
|
289
316
|
}
|
|
317
|
+
function findScopes(scopes2, scopeType) {
|
|
318
|
+
const parsedScopes = scopes2.map(parseConfigurableScope);
|
|
319
|
+
const searchScopes = parsedScopes.filter((scope) => scope?.type === "search");
|
|
320
|
+
const otherScopes = parsedScopes.filter((scope) => scope?.type !== "search");
|
|
321
|
+
const mergedSearchScope = flattenAndMergeScopes(searchScopes);
|
|
322
|
+
return [...otherScopes, mergedSearchScope].filter(
|
|
323
|
+
(scope) => scope?.type === scopeType
|
|
324
|
+
);
|
|
325
|
+
}
|
|
290
326
|
function getScopeOptions(rawOptions) {
|
|
291
327
|
return rawOptions.split(",").reduce((acc, option) => {
|
|
292
328
|
const [key, value] = option.split("=");
|
|
@@ -331,10 +367,13 @@ function getAuthorizedEventsFromScopes(scopes2) {
|
|
|
331
367
|
}).filter((event) => event !== void 0).filter((event, index, self) => self.indexOf(event) === index);
|
|
332
368
|
}
|
|
333
369
|
var scopes = Object.values(SCOPES);
|
|
334
|
-
var ActionScopes =
|
|
370
|
+
var ActionScopes = z.union([
|
|
335
371
|
DeclareScopes,
|
|
336
372
|
ValidateScopes,
|
|
337
373
|
RegisterScope,
|
|
338
|
-
|
|
374
|
+
z.literal(SCOPES.RECORD_PRINT_ISSUE_CERTIFIED_COPIES),
|
|
339
375
|
CorrectionScopes
|
|
340
376
|
]);
|
|
377
|
+
|
|
378
|
+
// src/scopes/index.ts
|
|
379
|
+
z2.globalRegistry.clear();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opencrvs/toolkit",
|
|
3
|
-
"version": "1.9.4-rc.
|
|
3
|
+
"version": "1.9.4-rc.f09603b",
|
|
4
4
|
"description": "OpenCRVS toolkit for building country configurations",
|
|
5
5
|
"license": "MPL-2.0",
|
|
6
6
|
"exports": {
|
|
@@ -17,14 +17,14 @@
|
|
|
17
17
|
"build:all": "lerna run build --include-dependencies --scope @opencrvs/toolkit && ./build.sh"
|
|
18
18
|
},
|
|
19
19
|
"dependencies": {
|
|
20
|
-
"
|
|
20
|
+
"@trpc/client": "11.4.3",
|
|
21
|
+
"@trpc/server": "11.4.3",
|
|
21
22
|
"ajv": "^8.17.1",
|
|
22
23
|
"ajv-formats": "^3.0.1",
|
|
23
24
|
"object-hash": "^3.0.0",
|
|
24
25
|
"superjson": "1.9.0-0",
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"zod-openapi": "^4.2.4"
|
|
26
|
+
"uuid": "^9.0.0",
|
|
27
|
+
"zod-openapi": "^5.4.3"
|
|
28
28
|
},
|
|
29
29
|
"devDependencies": {
|
|
30
30
|
"@types/uuid": "^9.0.3",
|