@nhtio/lucid-resourceful 0.1.0-master-71781cfd → 0.1.0-master-3ec631a4
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/{definitions-DgI468dW.cjs → data_type_schemas-BqeljaQB.cjs} +21 -177
- package/data_type_schemas-BqeljaQB.cjs.map +1 -0
- package/data_type_schemas-Cpco9Zba.js +225 -0
- package/data_type_schemas-Cpco9Zba.js.map +1 -0
- package/{decorator_utils-U_rZo8tv.cjs → decorator_utils-DSvYjLYD.cjs} +204 -60
- package/decorator_utils-DSvYjLYD.cjs.map +1 -0
- package/{decorator_utils-YSb1EGJ6.js → decorator_utils-gyymixlk.js} +207 -65
- package/decorator_utils-gyymixlk.js.map +1 -0
- package/definitions-DcB6B_4d.js +174 -0
- package/definitions-DcB6B_4d.js.map +1 -0
- package/definitions-DjQRkCeH.cjs +173 -0
- package/definitions-DjQRkCeH.cjs.map +1 -0
- package/definitions.cjs +1 -1
- package/definitions.mjs +11 -11
- package/{errors-B1rr67uM.js → errors-C-x5_jRE.js} +162 -27
- package/errors-C-x5_jRE.js.map +1 -0
- package/{errors-D8jb9VxY.cjs → errors-CNwuNhBV.cjs} +138 -5
- package/errors-CNwuNhBV.cjs.map +1 -0
- package/errors.cjs +5 -1
- package/errors.cjs.map +1 -1
- package/errors.d.ts +24 -2
- package/errors.mjs +19 -15
- package/index.cjs +1380 -652
- package/index.cjs.map +1 -1
- package/index.mjs +1624 -896
- package/index.mjs.map +1 -1
- package/joi.cjs +1854 -3368
- package/joi.cjs.map +1 -1
- package/joi.mjs +1857 -3371
- package/joi.mjs.map +1 -1
- package/package.json +1 -1
- package/private/decorators.d.ts +8 -8
- package/private/lucene_to_lucid_translator.d.ts +21 -175
- package/private/mixin.d.ts +68 -5
- package/private/services/open_api_schema_service.d.ts +111 -0
- package/private/type_guards.d.ts +62 -0
- package/private/types.d.ts +1 -1
- package/private/utils.d.ts +24 -0
- package/utils.cjs +1 -1
- package/utils.mjs +2 -2
- package/decorator_utils-U_rZo8tv.cjs.map +0 -1
- package/decorator_utils-YSb1EGJ6.js.map +0 -1
- package/definitions-B88XBTUF.js +0 -381
- package/definitions-B88XBTUF.js.map +0 -1
- package/definitions-DgI468dW.cjs.map +0 -1
- package/errors-B1rr67uM.js.map +0 -1
- package/errors-D8jb9VxY.cjs.map +0 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
const errors = require("./errors-D8jb9VxY.cjs");
|
|
3
2
|
const joi = require("./joi.cjs");
|
|
4
3
|
const CommonModifiersSchema = {
|
|
5
4
|
nullable: joi.joi.boolean().optional(),
|
|
@@ -20,7 +19,7 @@ const ResourcefulDataTypeInstanceSchema = joi.joi.alternatives().try(
|
|
|
20
19
|
return helpers.error("any.invalid", { value });
|
|
21
20
|
}
|
|
22
21
|
}, "regex validation").allow("").optional(),
|
|
23
|
-
format: joi.joi.string().
|
|
22
|
+
format: joi.joi.string().disallow("date", "date-time", "binary").optional(),
|
|
24
23
|
enum: joi.joi.array().items(joi.joi.string()).optional()
|
|
25
24
|
}).append(CommonModifiersSchema),
|
|
26
25
|
// Date types
|
|
@@ -103,7 +102,7 @@ const ResourcefulDataTypeInstanceSchema = joi.joi.alternatives().try(
|
|
|
103
102
|
anyOf: joi.joi.array().items(joi.joi.link("#resourcefulDataType")).min(1).required()
|
|
104
103
|
}).append(CommonModifiersSchema),
|
|
105
104
|
joi.joi.object({
|
|
106
|
-
not: joi.joi.link("#resourcefulDataType").required()
|
|
105
|
+
not: joi.joi.array().items(joi.joi.link("#resourcefulDataType")).min(1).required()
|
|
107
106
|
}).append(CommonModifiersSchema)
|
|
108
107
|
).id("resourcefulDataType");
|
|
109
108
|
const ResourcefulStringTypeSchema = () => joi.joi.object({
|
|
@@ -117,7 +116,7 @@ const ResourcefulStringTypeSchema = () => joi.joi.object({
|
|
|
117
116
|
return helpers.error("any.invalid", { value });
|
|
118
117
|
}
|
|
119
118
|
}, "regex validation").allow("").optional(),
|
|
120
|
-
format: joi.joi.string().
|
|
119
|
+
format: joi.joi.string().disallow("date", "date-time", "binary").optional(),
|
|
121
120
|
enum: joi.joi.array().items(joi.joi.string()).optional(),
|
|
122
121
|
...CommonModifiersSchema
|
|
123
122
|
});
|
|
@@ -150,11 +149,14 @@ const ResourcefulIntegerTypeSchema = () => joi.joi.object({
|
|
|
150
149
|
...CommonModifiersSchema
|
|
151
150
|
});
|
|
152
151
|
const ResourcefulBigintTypeSchema = () => joi.joi.object({
|
|
153
|
-
minimum: joi.joi.number().default(0),
|
|
152
|
+
minimum: joi.joi.alternatives(joi.joi.number().default(0), joi.joi.bigint().default(BigInt(0))),
|
|
154
153
|
exclusiveMinimum: joi.joi.boolean().default(false),
|
|
155
|
-
maximum: joi.joi.
|
|
154
|
+
maximum: joi.joi.alternatives(
|
|
155
|
+
joi.joi.number().default(Number.MAX_SAFE_INTEGER),
|
|
156
|
+
joi.joi.bigint().optional()
|
|
157
|
+
),
|
|
156
158
|
exclusiveMaximum: joi.joi.boolean().default(false),
|
|
157
|
-
multipleOf: joi.joi.number().min(1).default(1),
|
|
159
|
+
multipleOf: joi.joi.alternatives(joi.joi.number().min(1), joi.joi.bigint().min(0n)).default(BigInt(1)),
|
|
158
160
|
...CommonModifiersSchema
|
|
159
161
|
});
|
|
160
162
|
const ResourcefulUnsignedIntegerTypeSchema = () => joi.joi.object({
|
|
@@ -208,173 +210,15 @@ const ResourcefulArrayTypeSchema = () => joi.joi.object({
|
|
|
208
210
|
uniqueItems: joi.joi.boolean().default(false).optional(),
|
|
209
211
|
...CommonModifiersSchema
|
|
210
212
|
});
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
Object.defineProperty(this, "type", {
|
|
224
|
-
value: type,
|
|
225
|
-
writable: false,
|
|
226
|
-
enumerable: true,
|
|
227
|
-
configurable: false
|
|
228
|
-
});
|
|
229
|
-
Object.entries(value).forEach(([key, val]) => {
|
|
230
|
-
Object.defineProperty(this, key, {
|
|
231
|
-
value: val,
|
|
232
|
-
writable: false,
|
|
233
|
-
enumerable: true,
|
|
234
|
-
configurable: false
|
|
235
|
-
});
|
|
236
|
-
});
|
|
237
|
-
Object.entries(staticDefinitions).forEach(([key, val]) => {
|
|
238
|
-
Object.defineProperty(this, key, {
|
|
239
|
-
value: val,
|
|
240
|
-
writable: false,
|
|
241
|
-
enumerable: true,
|
|
242
|
-
configurable: false
|
|
243
|
-
});
|
|
244
|
-
});
|
|
245
|
-
}
|
|
246
|
-
get [Symbol.toStringTag]() {
|
|
247
|
-
return JSON.stringify(this);
|
|
248
|
-
}
|
|
249
|
-
toString() {
|
|
250
|
-
return JSON.stringify(this);
|
|
251
|
-
}
|
|
252
|
-
// toObject(): { [key: string]: any } {
|
|
253
|
-
// const ret: { [key: string]: any } = {
|
|
254
|
-
// type,
|
|
255
|
-
// }
|
|
256
|
-
// for (const key of Object.getOwnPropertyNames(this)) {
|
|
257
|
-
// if (key !== 'constructor' && key !== 'toString' && key !== 'toObject') {
|
|
258
|
-
// ret[key] = (this as any)[key]
|
|
259
|
-
// }
|
|
260
|
-
// }
|
|
261
|
-
// Object.entries(staticDefinitions).forEach(([key, val]) => {
|
|
262
|
-
// ret[key] = val
|
|
263
|
-
// })
|
|
264
|
-
// return ret
|
|
265
|
-
// }
|
|
266
|
-
};
|
|
267
|
-
Object.defineProperty(Base, "name", {
|
|
268
|
-
value: name,
|
|
269
|
-
writable: false,
|
|
270
|
-
enumerable: false,
|
|
271
|
-
configurable: false
|
|
272
|
-
});
|
|
273
|
-
Object.defineProperty(Base, "schema", {
|
|
274
|
-
value: schema,
|
|
275
|
-
writable: false,
|
|
276
|
-
enumerable: false,
|
|
277
|
-
configurable: false
|
|
278
|
-
});
|
|
279
|
-
const Fn = function(...args) {
|
|
280
|
-
if (!new.target) {
|
|
281
|
-
return new Fn(...args);
|
|
282
|
-
}
|
|
283
|
-
return new Base(...args);
|
|
284
|
-
};
|
|
285
|
-
Fn.prototype = Object.create(Base.prototype);
|
|
286
|
-
Fn.prototype.constructor = Fn;
|
|
287
|
-
for (const key of Object.getOwnPropertyNames(Base)) {
|
|
288
|
-
if (key !== "prototype" && key !== "name" && key !== "length") {
|
|
289
|
-
Object.defineProperty(Fn, key, Object.getOwnPropertyDescriptor(Base, key));
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
return Fn;
|
|
293
|
-
};
|
|
294
|
-
const ResourcefulStringType = generateResourcefulDataTypeClass(
|
|
295
|
-
"ResourcefulStringType",
|
|
296
|
-
"string",
|
|
297
|
-
ResourcefulStringTypeSchema
|
|
298
|
-
);
|
|
299
|
-
const ResourcefulDateType = generateResourcefulDataTypeClass(
|
|
300
|
-
"ResourcefulDateType",
|
|
301
|
-
"string",
|
|
302
|
-
ResourcefulDateTypeSchema,
|
|
303
|
-
{ format: "date" }
|
|
304
|
-
);
|
|
305
|
-
const ResourcefulDateTimeType = generateResourcefulDataTypeClass(
|
|
306
|
-
"ResourcefulDateTimeType",
|
|
307
|
-
"string",
|
|
308
|
-
ResourcefulDateTimeTypeSchema,
|
|
309
|
-
{ format: "date-time" }
|
|
310
|
-
);
|
|
311
|
-
const ResourcefulBinaryType = generateResourcefulDataTypeClass(
|
|
312
|
-
"ResourcefulBinaryType",
|
|
313
|
-
"string",
|
|
314
|
-
ResourcefulBinaryTypeSchema,
|
|
315
|
-
{ format: "binary" }
|
|
316
|
-
);
|
|
317
|
-
const ResourcefulNumberType = generateResourcefulDataTypeClass(
|
|
318
|
-
"ResourcefulNumberType",
|
|
319
|
-
"number",
|
|
320
|
-
ResourcefulNumberTypeSchema
|
|
321
|
-
);
|
|
322
|
-
const ResourcefulIntegerType = generateResourcefulDataTypeClass(
|
|
323
|
-
"ResourcefulIntegerType",
|
|
324
|
-
"integer",
|
|
325
|
-
ResourcefulIntegerTypeSchema,
|
|
326
|
-
{ format: "int32" }
|
|
327
|
-
);
|
|
328
|
-
const ResourcefulBigintType = generateResourcefulDataTypeClass(
|
|
329
|
-
"ResourcefulBigintType",
|
|
330
|
-
"integer",
|
|
331
|
-
ResourcefulBigintTypeSchema,
|
|
332
|
-
{ format: "int64" }
|
|
333
|
-
);
|
|
334
|
-
const ResourcefulUnsignedIntegerType = generateResourcefulDataTypeClass(
|
|
335
|
-
"ResourcefulUnsignedIntegerType",
|
|
336
|
-
"integer",
|
|
337
|
-
ResourcefulUnsignedIntegerTypeSchema
|
|
338
|
-
);
|
|
339
|
-
const ResourcefulBooleanType = generateResourcefulDataTypeClass(
|
|
340
|
-
"ResourcefulBooleanType",
|
|
341
|
-
"boolean",
|
|
342
|
-
ResourcefulBooleanTypeSchema
|
|
343
|
-
);
|
|
344
|
-
const ResourcefulObjectType = generateResourcefulDataTypeClass(
|
|
345
|
-
"ResourcefulObjectType",
|
|
346
|
-
"object",
|
|
347
|
-
ResourcefulObjectTypeSchema
|
|
348
|
-
);
|
|
349
|
-
const ResourcefulArrayType = generateResourcefulDataTypeClass(
|
|
350
|
-
"ResourcefulArrayType",
|
|
351
|
-
"array",
|
|
352
|
-
ResourcefulArrayTypeSchema
|
|
353
|
-
);
|
|
354
|
-
const definitions = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
355
|
-
__proto__: null,
|
|
356
|
-
ResourcefulArrayType,
|
|
357
|
-
ResourcefulBigintType,
|
|
358
|
-
ResourcefulBinaryType,
|
|
359
|
-
ResourcefulBooleanType,
|
|
360
|
-
ResourcefulDateTimeType,
|
|
361
|
-
ResourcefulDateType,
|
|
362
|
-
ResourcefulIntegerType,
|
|
363
|
-
ResourcefulNumberType,
|
|
364
|
-
ResourcefulObjectType,
|
|
365
|
-
ResourcefulStringType,
|
|
366
|
-
ResourcefulUnsignedIntegerType
|
|
367
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
368
|
-
exports.ResourcefulArrayType = ResourcefulArrayType;
|
|
369
|
-
exports.ResourcefulBigintType = ResourcefulBigintType;
|
|
370
|
-
exports.ResourcefulBinaryType = ResourcefulBinaryType;
|
|
371
|
-
exports.ResourcefulBooleanType = ResourcefulBooleanType;
|
|
372
|
-
exports.ResourcefulDateTimeType = ResourcefulDateTimeType;
|
|
373
|
-
exports.ResourcefulDateType = ResourcefulDateType;
|
|
374
|
-
exports.ResourcefulIntegerType = ResourcefulIntegerType;
|
|
375
|
-
exports.ResourcefulNumberType = ResourcefulNumberType;
|
|
376
|
-
exports.ResourcefulObjectType = ResourcefulObjectType;
|
|
377
|
-
exports.ResourcefulStringType = ResourcefulStringType;
|
|
378
|
-
exports.ResourcefulUnsignedIntegerType = ResourcefulUnsignedIntegerType;
|
|
379
|
-
exports.definitions = definitions;
|
|
380
|
-
//# sourceMappingURL=definitions-DgI468dW.cjs.map
|
|
213
|
+
exports.ResourcefulArrayTypeSchema = ResourcefulArrayTypeSchema;
|
|
214
|
+
exports.ResourcefulBigintTypeSchema = ResourcefulBigintTypeSchema;
|
|
215
|
+
exports.ResourcefulBinaryTypeSchema = ResourcefulBinaryTypeSchema;
|
|
216
|
+
exports.ResourcefulBooleanTypeSchema = ResourcefulBooleanTypeSchema;
|
|
217
|
+
exports.ResourcefulDateTimeTypeSchema = ResourcefulDateTimeTypeSchema;
|
|
218
|
+
exports.ResourcefulDateTypeSchema = ResourcefulDateTypeSchema;
|
|
219
|
+
exports.ResourcefulIntegerTypeSchema = ResourcefulIntegerTypeSchema;
|
|
220
|
+
exports.ResourcefulNumberTypeSchema = ResourcefulNumberTypeSchema;
|
|
221
|
+
exports.ResourcefulObjectTypeSchema = ResourcefulObjectTypeSchema;
|
|
222
|
+
exports.ResourcefulStringTypeSchema = ResourcefulStringTypeSchema;
|
|
223
|
+
exports.ResourcefulUnsignedIntegerTypeSchema = ResourcefulUnsignedIntegerTypeSchema;
|
|
224
|
+
//# sourceMappingURL=data_type_schemas-BqeljaQB.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data_type_schemas-BqeljaQB.cjs","sources":["../src/private/data_type_schemas.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Data Type Schemas\n|--------------------------------------------------------------------------\n|\n| Joi validation schemas for Resourceful data types. These schemas ensure\n| that data type options conform to OpenAPI 3.0 specifications and provide\n| runtime validation for the data type system.\n|\n*/\n\nimport { joi } from '@nhtio/lucid-resourceful/joi'\nimport type {\n ResourcefulStringTypeOptions,\n ResourcefulDateTypeOptions,\n ResourcefulDateTimeTypeOptions,\n ResourcefulBinaryTypeOptions,\n ResourcefulNumberTypeOptions,\n ResourcefulIntegerTypeOptions,\n ResourcefulBigintTypeOptions,\n ResourcefulUnsignedIntegerTypeOptions,\n ResourcefulBooleanTypeOptions,\n ResourcefulObjectTypeOptions,\n ResourcefulArrayTypeOptions,\n} from './data_types'\n\n/*\n|--------------------------------------------------------------------------\n| Reusable Schema Components\n|--------------------------------------------------------------------------\n|\n| These sub-schemas can be combined to create the main data type schemas\n| while maintaining strict validation and supporting OpenAPI patterns.\n|\n*/\n\n/** Common modifier properties that can be applied to any data type */\nconst CommonModifiersSchema = {\n nullable: joi.boolean().optional(),\n readOnly: joi.boolean().optional(),\n writeOnly: joi.boolean().optional(),\n}\n\n/** Base schema for a complete ResourcefulDataType instance (with type and modifiers) */\nconst ResourcefulDataTypeInstanceSchema = joi\n .alternatives()\n .try(\n // String types\n joi\n .object({\n type: joi.string().valid('string').required(),\n minLength: joi.number().min(0).default(0),\n maxLength: joi.number().min(0).default(Number.MAX_SAFE_INTEGER),\n pattern: joi\n .string()\n .custom((value, helpers) => {\n try {\n new RegExp(value)\n return value\n } catch (error) {\n /* istanbul ignore next */\n return helpers.error('any.invalid', { value })\n }\n }, 'regex validation')\n .allow('')\n .optional(),\n format: joi.string().disallow('date', 'date-time', 'binary').optional(),\n enum: joi.array().items(joi.string()).optional(),\n })\n .append(CommonModifiersSchema),\n // Date types\n joi\n .object({\n type: joi.string().valid('string').required(),\n format: joi.string().valid('date').required(),\n })\n .append(CommonModifiersSchema),\n // DateTime types\n joi\n .object({\n type: joi.string().valid('string').required(),\n format: joi.string().valid('date-time').required(),\n })\n .append(CommonModifiersSchema),\n // Binary types\n joi\n .object({\n type: joi.string().valid('string').required(),\n format: joi.string().valid('binary').required(),\n minLength: joi.number().min(0).default(0),\n maxLength: joi.number().min(0).default(Number.MAX_SAFE_INTEGER),\n })\n .append(CommonModifiersSchema),\n // Number types\n joi\n .object({\n type: joi.string().valid('number').required(),\n minimum: joi.number().optional(),\n exclusiveMinimum: joi.boolean().default(false),\n maximum: joi.number().optional(),\n exclusiveMaximum: joi.boolean().default(false),\n format: joi.string().valid('float', 'double').optional(),\n multipleOf: joi.number().min(0).default(1),\n })\n .append(CommonModifiersSchema),\n // Integer types\n joi\n .object({\n type: joi.string().valid('integer').required(),\n minimum: joi.number().optional(),\n exclusiveMinimum: joi.boolean().default(false),\n maximum: joi.number().optional(),\n exclusiveMaximum: joi.boolean().default(false),\n format: joi.string().valid('int32', 'int64').optional(),\n multipleOf: joi.number().min(1).default(1),\n })\n .append(CommonModifiersSchema),\n // Boolean types\n joi\n .object({\n type: joi.string().valid('boolean').required(),\n })\n .append(CommonModifiersSchema),\n // Object types\n joi\n .object({\n type: joi.string().valid('object').required(),\n properties: joi\n .object()\n .pattern(joi.string(), joi.link('#resourcefulDataType'))\n .default({}),\n required: joi\n .array()\n .items(joi.string())\n .unique()\n .custom((value, helpers) => {\n /* istanbul ignore next */\n const properties = helpers.state.ancestors[0]?.properties || {}\n const propertyKeys = Object.keys(properties)\n\n // Check that all required keys exist in properties\n const invalidKeys = value.filter((key: string) => !propertyKeys.includes(key))\n /* istanbul ignore next 5 */\n if (invalidKeys.length > 0) {\n return helpers.error('any.custom', {\n message: `Required keys [${invalidKeys.join(', ')}] are not defined in properties`,\n })\n }\n\n return value\n }, 'required keys validation')\n .optional(),\n additionalProperties: joi\n .alternatives(joi.boolean(), joi.link('#resourcefulDataType'))\n .optional(),\n minProperties: joi.number().min(0).default(0),\n maxProperties: joi.number().min(0).default(Number.MAX_SAFE_INTEGER),\n })\n .append(CommonModifiersSchema),\n // Array types\n joi\n .object({\n type: joi.string().valid('array').required(),\n items: joi.link('#resourcefulDataType').required(),\n minItems: joi.number().min(0).default(0),\n maxItems: joi.number().min(0).default(Number.MAX_SAFE_INTEGER),\n uniqueItems: joi.boolean().default(false),\n })\n .append(CommonModifiersSchema),\n // Schema composition types\n joi\n .object({\n oneOf: joi.array().items(joi.link('#resourcefulDataType')).min(1).required(),\n })\n .append(CommonModifiersSchema),\n joi\n .object({\n allOf: joi.array().items(joi.link('#resourcefulDataType')).min(1).required(),\n })\n .append(CommonModifiersSchema),\n joi\n .object({\n anyOf: joi.array().items(joi.link('#resourcefulDataType')).min(1).required(),\n })\n .append(CommonModifiersSchema),\n joi\n .object({\n not: joi.array().items(joi.link('#resourcefulDataType')).min(1).required(),\n })\n .append(CommonModifiersSchema)\n )\n .id('resourcefulDataType')\n\n/*\n|--------------------------------------------------------------------------\n| Individual Data Type Schemas\n|--------------------------------------------------------------------------\n|\n| Schemas for each specific data type with their individual validation rules\n|\n*/\n\nexport const ResourcefulStringTypeSchema = () =>\n joi.object<ResourcefulStringTypeOptions>({\n minLength: joi.number().min(0).default(0),\n maxLength: joi.number().min(0).default(Number.MAX_SAFE_INTEGER),\n pattern: joi\n .string()\n .custom((value, helpers) => {\n try {\n new RegExp(value)\n return value\n } catch (error) {\n return helpers.error('any.invalid', { value })\n }\n }, 'regex validation')\n .allow('')\n .optional(),\n format: joi.string().disallow('date', 'date-time', 'binary').optional(),\n enum: joi.array().items(joi.string()).optional(),\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulDateTypeSchema = () =>\n joi.object<ResourcefulDateTypeOptions>({\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulDateTimeTypeSchema = () =>\n joi.object<ResourcefulDateTimeTypeOptions>({\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulBinaryTypeSchema = () =>\n joi.object<ResourcefulBinaryTypeOptions>({\n minLength: joi.number().min(0).default(0),\n maxLength: joi.number().min(0).default(Number.MAX_SAFE_INTEGER),\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulNumberTypeSchema = () =>\n joi.object<ResourcefulNumberTypeOptions>({\n minimum: joi.number().default(0),\n exclusiveMinimum: joi.boolean().default(false),\n maximum: joi.number().default(Number.MAX_SAFE_INTEGER),\n exclusiveMaximum: joi.boolean().default(false),\n format: joi.string().valid('float', 'double').optional(),\n multipleOf: joi.number().min(0).default(1),\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulIntegerTypeSchema = () =>\n joi.object<ResourcefulIntegerTypeOptions>({\n minimum: joi.number().default(0),\n exclusiveMinimum: joi.boolean().default(false),\n maximum: joi.number().default(Number.MAX_SAFE_INTEGER),\n exclusiveMaximum: joi.boolean().default(false),\n multipleOf: joi.number().min(1).default(1),\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulBigintTypeSchema = () =>\n joi.object<ResourcefulBigintTypeOptions>({\n minimum: joi.alternatives(joi.number().default(0), joi.bigint().default(BigInt(0) as any)),\n exclusiveMinimum: joi.boolean().default(false),\n maximum: joi.alternatives(\n joi.number().default(Number.MAX_SAFE_INTEGER),\n joi.bigint().optional()\n ),\n exclusiveMaximum: joi.boolean().default(false),\n multipleOf: joi\n .alternatives(joi.number().min(1), joi.bigint().min(0n))\n .default(BigInt(1) as any),\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulUnsignedIntegerTypeSchema = () =>\n joi.object<ResourcefulUnsignedIntegerTypeOptions>({\n minimum: joi.number().min(0).default(0),\n exclusiveMinimum: joi.boolean().default(false),\n maximum: joi.number().default(Number.MAX_SAFE_INTEGER),\n exclusiveMaximum: joi.boolean().default(false),\n multipleOf: joi.number().min(1).default(1),\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulBooleanTypeSchema = () =>\n joi.object<ResourcefulBooleanTypeOptions>({\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulObjectTypeSchema = () =>\n joi.object<ResourcefulObjectTypeOptions>({\n properties: joi.object().pattern(joi.string(), ResourcefulDataTypeInstanceSchema).default({}),\n required: joi\n .array()\n .items(joi.string())\n .unique()\n .custom((value, helpers) => {\n /* istanbul ignore next */\n const properties = helpers.state.ancestors[0]?.properties || {}\n const propertyKeys = Object.keys(properties)\n\n // Check that all required keys exist in properties\n const invalidKeys = value.filter((key: string) => !propertyKeys.includes(key))\n /* istanbul ignore next 5 */\n if (invalidKeys.length > 0) {\n return helpers.error('any.custom', {\n message: `Required keys [${invalidKeys.join(', ')}] are not defined in properties`,\n })\n }\n\n return value\n }, 'required keys validation')\n .optional(),\n additionalProperties: joi\n .alternatives(joi.boolean(), ResourcefulDataTypeInstanceSchema)\n .optional(),\n minProperties: joi.number().min(0).default(0).optional(),\n maxProperties: joi.number().min(0).default(Number.MAX_SAFE_INTEGER).optional(),\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulArrayTypeSchema = () =>\n joi.object<ResourcefulArrayTypeOptions>({\n items: joi\n .alternatives()\n .try(\n ResourcefulDataTypeInstanceSchema,\n joi.object({\n oneOf: joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required(),\n }),\n joi.object({\n allOf: joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required(),\n }),\n joi.object({\n anyOf: joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required(),\n }),\n joi.object({\n not: joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required(),\n })\n )\n .required(),\n minItems: joi.number().min(0).default(0).optional(),\n maxItems: joi.number().min(0).default(Number.MAX_SAFE_INTEGER).optional(),\n uniqueItems: joi.boolean().default(false).optional(),\n ...CommonModifiersSchema,\n })\n"],"names":["joi"],"mappings":";;AAqCA,MAAM,wBAAwB;AAAA,EAC5B,UAAUA,IAAAA,IAAI,QAAA,EAAU,SAAA;AAAA,EACxB,UAAUA,IAAAA,IAAI,QAAA,EAAU,SAAA;AAAA,EACxB,WAAWA,IAAAA,IAAI,QAAA,EAAU,SAAA;AAC3B;AAGA,MAAM,oCAAoCA,IAAAA,IACvC,aAAA,EACA;AAAA;AAAA,EAECA,IAAAA,IACG,OAAO;AAAA,IACN,MAAMA,IAAAA,IAAI,OAAA,EAAS,MAAM,QAAQ,EAAE,SAAA;AAAA,IACnC,WAAWA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,IACxC,WAAWA,IAAAA,IAAI,SAAS,IAAI,CAAC,EAAE,QAAQ,OAAO,gBAAgB;AAAA,IAC9D,SAASA,IAAAA,IACN,OAAA,EACA,OAAO,CAAC,OAAO,YAAY;AAC1B,UAAI;AACF,YAAI,OAAO,KAAK;AAChB,eAAO;AAAA,MACT,SAAS,OAAO;AAEd,eAAO,QAAQ,MAAM,eAAe,EAAE,OAAO;AAAA,MAC/C;AAAA,IACF,GAAG,kBAAkB,EACpB,MAAM,EAAE,EACR,SAAA;AAAA,IACH,QAAQA,IAAAA,IAAI,SAAS,SAAS,QAAQ,aAAa,QAAQ,EAAE,SAAA;AAAA,IAC7D,MAAMA,IAAAA,IAAI,MAAA,EAAQ,MAAMA,QAAI,OAAA,CAAQ,EAAE,SAAA;AAAA,EAAS,CAChD,EACA,OAAO,qBAAqB;AAAA;AAAA,EAE/BA,IAAAA,IACG,OAAO;AAAA,IACN,MAAMA,IAAAA,IAAI,OAAA,EAAS,MAAM,QAAQ,EAAE,SAAA;AAAA,IACnC,QAAQA,IAAAA,IAAI,OAAA,EAAS,MAAM,MAAM,EAAE,SAAA;AAAA,EAAS,CAC7C,EACA,OAAO,qBAAqB;AAAA;AAAA,EAE/BA,IAAAA,IACG,OAAO;AAAA,IACN,MAAMA,IAAAA,IAAI,OAAA,EAAS,MAAM,QAAQ,EAAE,SAAA;AAAA,IACnC,QAAQA,IAAAA,IAAI,OAAA,EAAS,MAAM,WAAW,EAAE,SAAA;AAAA,EAAS,CAClD,EACA,OAAO,qBAAqB;AAAA;AAAA,EAE/BA,IAAAA,IACG,OAAO;AAAA,IACN,MAAMA,IAAAA,IAAI,OAAA,EAAS,MAAM,QAAQ,EAAE,SAAA;AAAA,IACnC,QAAQA,IAAAA,IAAI,OAAA,EAAS,MAAM,QAAQ,EAAE,SAAA;AAAA,IACrC,WAAWA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,IACxC,WAAWA,IAAAA,IAAI,SAAS,IAAI,CAAC,EAAE,QAAQ,OAAO,gBAAgB;AAAA,EAAA,CAC/D,EACA,OAAO,qBAAqB;AAAA;AAAA,EAE/BA,IAAAA,IACG,OAAO;AAAA,IACN,MAAMA,IAAAA,IAAI,OAAA,EAAS,MAAM,QAAQ,EAAE,SAAA;AAAA,IACnC,SAASA,IAAAA,IAAI,OAAA,EAAS,SAAA;AAAA,IACtB,kBAAkBA,IAAAA,IAAI,UAAU,QAAQ,KAAK;AAAA,IAC7C,SAASA,IAAAA,IAAI,OAAA,EAAS,SAAA;AAAA,IACtB,kBAAkBA,IAAAA,IAAI,UAAU,QAAQ,KAAK;AAAA,IAC7C,QAAQA,IAAAA,IAAI,OAAA,EAAS,MAAM,SAAS,QAAQ,EAAE,SAAA;AAAA,IAC9C,YAAYA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,EAAA,CAC1C,EACA,OAAO,qBAAqB;AAAA;AAAA,EAE/BA,IAAAA,IACG,OAAO;AAAA,IACN,MAAMA,IAAAA,IAAI,OAAA,EAAS,MAAM,SAAS,EAAE,SAAA;AAAA,IACpC,SAASA,IAAAA,IAAI,OAAA,EAAS,SAAA;AAAA,IACtB,kBAAkBA,IAAAA,IAAI,UAAU,QAAQ,KAAK;AAAA,IAC7C,SAASA,IAAAA,IAAI,OAAA,EAAS,SAAA;AAAA,IACtB,kBAAkBA,IAAAA,IAAI,UAAU,QAAQ,KAAK;AAAA,IAC7C,QAAQA,IAAAA,IAAI,OAAA,EAAS,MAAM,SAAS,OAAO,EAAE,SAAA;AAAA,IAC7C,YAAYA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,EAAA,CAC1C,EACA,OAAO,qBAAqB;AAAA;AAAA,EAE/BA,IAAAA,IACG,OAAO;AAAA,IACN,MAAMA,IAAAA,IAAI,OAAA,EAAS,MAAM,SAAS,EAAE,SAAA;AAAA,EAAS,CAC9C,EACA,OAAO,qBAAqB;AAAA;AAAA,EAE/BA,IAAAA,IACG,OAAO;AAAA,IACN,MAAMA,IAAAA,IAAI,OAAA,EAAS,MAAM,QAAQ,EAAE,SAAA;AAAA,IACnC,YAAYA,IAAAA,IACT,SACA,QAAQA,IAAAA,IAAI,UAAUA,IAAAA,IAAI,KAAK,sBAAsB,CAAC,EACtD,QAAQ,CAAA,CAAE;AAAA,IACb,UAAUA,IAAAA,IACP,QACA,MAAMA,IAAAA,IAAI,QAAQ,EAClB,OAAA,EACA,OAAO,CAAC,OAAO,YAAY;;AAE1B,YAAM,eAAa,aAAQ,MAAM,UAAU,CAAC,MAAzB,mBAA4B,eAAc,CAAA;AAC7D,YAAM,eAAe,OAAO,KAAK,UAAU;AAG3C,YAAM,cAAc,MAAM,OAAO,CAAC,QAAgB,CAAC,aAAa,SAAS,GAAG,CAAC;AAE7E,UAAI,YAAY,SAAS,GAAG;AAC1B,eAAO,QAAQ,MAAM,cAAc;AAAA,UACjC,SAAS,kBAAkB,YAAY,KAAK,IAAI,CAAC;AAAA,QAAA,CAClD;AAAA,MACH;AAEA,aAAO;AAAA,IACT,GAAG,0BAA0B,EAC5B,SAAA;AAAA,IACH,sBAAsBA,IAAAA,IACnB,aAAaA,IAAAA,IAAI,QAAA,GAAWA,IAAAA,IAAI,KAAK,sBAAsB,CAAC,EAC5D,SAAA;AAAA,IACH,eAAeA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,IAC5C,eAAeA,IAAAA,IAAI,SAAS,IAAI,CAAC,EAAE,QAAQ,OAAO,gBAAgB;AAAA,EAAA,CACnE,EACA,OAAO,qBAAqB;AAAA;AAAA,EAE/BA,IAAAA,IACG,OAAO;AAAA,IACN,MAAMA,IAAAA,IAAI,OAAA,EAAS,MAAM,OAAO,EAAE,SAAA;AAAA,IAClC,OAAOA,IAAAA,IAAI,KAAK,sBAAsB,EAAE,SAAA;AAAA,IACxC,UAAUA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,IACvC,UAAUA,IAAAA,IAAI,SAAS,IAAI,CAAC,EAAE,QAAQ,OAAO,gBAAgB;AAAA,IAC7D,aAAaA,IAAAA,IAAI,QAAA,EAAU,QAAQ,KAAK;AAAA,EAAA,CACzC,EACA,OAAO,qBAAqB;AAAA;AAAA,EAE/BA,IAAAA,IACG,OAAO;AAAA,IACN,OAAOA,IAAAA,IAAI,MAAA,EAAQ,MAAMA,IAAAA,IAAI,KAAK,sBAAsB,CAAC,EAAE,IAAI,CAAC,EAAE,SAAA;AAAA,EAAS,CAC5E,EACA,OAAO,qBAAqB;AAAA,EAC/BA,IAAAA,IACG,OAAO;AAAA,IACN,OAAOA,IAAAA,IAAI,MAAA,EAAQ,MAAMA,IAAAA,IAAI,KAAK,sBAAsB,CAAC,EAAE,IAAI,CAAC,EAAE,SAAA;AAAA,EAAS,CAC5E,EACA,OAAO,qBAAqB;AAAA,EAC/BA,IAAAA,IACG,OAAO;AAAA,IACN,OAAOA,IAAAA,IAAI,MAAA,EAAQ,MAAMA,IAAAA,IAAI,KAAK,sBAAsB,CAAC,EAAE,IAAI,CAAC,EAAE,SAAA;AAAA,EAAS,CAC5E,EACA,OAAO,qBAAqB;AAAA,EAC/BA,IAAAA,IACG,OAAO;AAAA,IACN,KAAKA,IAAAA,IAAI,MAAA,EAAQ,MAAMA,IAAAA,IAAI,KAAK,sBAAsB,CAAC,EAAE,IAAI,CAAC,EAAE,SAAA;AAAA,EAAS,CAC1E,EACA,OAAO,qBAAqB;AACjC,EACC,GAAG,qBAAqB;AAWpB,MAAM,8BAA8B,MACzCA,IAAAA,IAAI,OAAqC;AAAA,EACvC,WAAWA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,EACxC,WAAWA,IAAAA,IAAI,SAAS,IAAI,CAAC,EAAE,QAAQ,OAAO,gBAAgB;AAAA,EAC9D,SAASA,IAAAA,IACN,OAAA,EACA,OAAO,CAAC,OAAO,YAAY;AAC1B,QAAI;AACF,UAAI,OAAO,KAAK;AAChB,aAAO;AAAA,IACT,SAAS,OAAO;AACd,aAAO,QAAQ,MAAM,eAAe,EAAE,OAAO;AAAA,IAC/C;AAAA,EACF,GAAG,kBAAkB,EACpB,MAAM,EAAE,EACR,SAAA;AAAA,EACH,QAAQA,IAAAA,IAAI,SAAS,SAAS,QAAQ,aAAa,QAAQ,EAAE,SAAA;AAAA,EAC7D,MAAMA,IAAAA,IAAI,QAAQ,MAAMA,IAAAA,IAAI,OAAA,CAAQ,EAAE,SAAA;AAAA,EACtC,GAAG;AACL,CAAC;AAEI,MAAM,4BAA4B,MACvCA,IAAAA,IAAI,OAAmC;AAAA,EACrC,GAAG;AACL,CAAC;AAEI,MAAM,gCAAgC,MAC3CA,IAAAA,IAAI,OAAuC;AAAA,EACzC,GAAG;AACL,CAAC;AAEI,MAAM,8BAA8B,MACzCA,IAAAA,IAAI,OAAqC;AAAA,EACvC,WAAWA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,EACxC,WAAWA,IAAAA,IAAI,SAAS,IAAI,CAAC,EAAE,QAAQ,OAAO,gBAAgB;AAAA,EAC9D,GAAG;AACL,CAAC;AAEI,MAAM,8BAA8B,MACzCA,IAAAA,IAAI,OAAqC;AAAA,EACvC,SAASA,IAAAA,IAAI,SAAS,QAAQ,CAAC;AAAA,EAC/B,kBAAkBA,IAAAA,IAAI,UAAU,QAAQ,KAAK;AAAA,EAC7C,SAASA,IAAAA,IAAI,OAAA,EAAS,QAAQ,OAAO,gBAAgB;AAAA,EACrD,kBAAkBA,IAAAA,IAAI,UAAU,QAAQ,KAAK;AAAA,EAC7C,QAAQA,IAAAA,IAAI,OAAA,EAAS,MAAM,SAAS,QAAQ,EAAE,SAAA;AAAA,EAC9C,YAAYA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,EACzC,GAAG;AACL,CAAC;AAEI,MAAM,+BAA+B,MAC1CA,IAAAA,IAAI,OAAsC;AAAA,EACxC,SAASA,IAAAA,IAAI,SAAS,QAAQ,CAAC;AAAA,EAC/B,kBAAkBA,IAAAA,IAAI,UAAU,QAAQ,KAAK;AAAA,EAC7C,SAASA,IAAAA,IAAI,OAAA,EAAS,QAAQ,OAAO,gBAAgB;AAAA,EACrD,kBAAkBA,IAAAA,IAAI,UAAU,QAAQ,KAAK;AAAA,EAC7C,YAAYA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,EACzC,GAAG;AACL,CAAC;AAEI,MAAM,8BAA8B,MACzCA,IAAAA,IAAI,OAAqC;AAAA,EACvC,SAASA,IAAAA,IAAI,aAAaA,IAAAA,IAAI,OAAA,EAAS,QAAQ,CAAC,GAAGA,IAAAA,IAAI,SAAS,QAAQ,OAAO,CAAC,CAAQ,CAAC;AAAA,EACzF,kBAAkBA,IAAAA,IAAI,UAAU,QAAQ,KAAK;AAAA,EAC7C,SAASA,IAAAA,IAAI;AAAA,IACXA,IAAAA,IAAI,OAAA,EAAS,QAAQ,OAAO,gBAAgB;AAAA,IAC5CA,IAAAA,IAAI,OAAA,EAAS,SAAA;AAAA,EAAS;AAAA,EAExB,kBAAkBA,IAAAA,IAAI,UAAU,QAAQ,KAAK;AAAA,EAC7C,YAAYA,IAAAA,IACT,aAAaA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,GAAGA,IAAAA,IAAI,OAAA,EAAS,IAAI,EAAE,CAAC,EACtD,QAAQ,OAAO,CAAC,CAAQ;AAAA,EAC3B,GAAG;AACL,CAAC;AAEI,MAAM,uCAAuC,MAClDA,IAAAA,IAAI,OAA8C;AAAA,EAChD,SAASA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,EACtC,kBAAkBA,IAAAA,IAAI,UAAU,QAAQ,KAAK;AAAA,EAC7C,SAASA,IAAAA,IAAI,OAAA,EAAS,QAAQ,OAAO,gBAAgB;AAAA,EACrD,kBAAkBA,IAAAA,IAAI,UAAU,QAAQ,KAAK;AAAA,EAC7C,YAAYA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,CAAC;AAAA,EACzC,GAAG;AACL,CAAC;AAEI,MAAM,+BAA+B,MAC1CA,IAAAA,IAAI,OAAsC;AAAA,EACxC,GAAG;AACL,CAAC;AAEI,MAAM,8BAA8B,MACzCA,IAAAA,IAAI,OAAqC;AAAA,EACvC,YAAYA,IAAAA,IAAI,OAAA,EAAS,QAAQA,IAAAA,IAAI,OAAA,GAAU,iCAAiC,EAAE,QAAQ,EAAE;AAAA,EAC5F,UAAUA,IAAAA,IACP,QACA,MAAMA,IAAAA,IAAI,QAAQ,EAClB,OAAA,EACA,OAAO,CAAC,OAAO,YAAY;;AAE1B,UAAM,eAAa,aAAQ,MAAM,UAAU,CAAC,MAAzB,mBAA4B,eAAc,CAAA;AAC7D,UAAM,eAAe,OAAO,KAAK,UAAU;AAG3C,UAAM,cAAc,MAAM,OAAO,CAAC,QAAgB,CAAC,aAAa,SAAS,GAAG,CAAC;AAE7E,QAAI,YAAY,SAAS,GAAG;AAC1B,aAAO,QAAQ,MAAM,cAAc;AAAA,QACjC,SAAS,kBAAkB,YAAY,KAAK,IAAI,CAAC;AAAA,MAAA,CAClD;AAAA,IACH;AAEA,WAAO;AAAA,EACT,GAAG,0BAA0B,EAC5B,SAAA;AAAA,EACH,sBAAsBA,IAAAA,IACnB,aAAaA,IAAAA,IAAI,WAAW,iCAAiC,EAC7D,SAAA;AAAA,EACH,eAAeA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAA;AAAA,EAC9C,eAAeA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,OAAO,gBAAgB,EAAE,SAAA;AAAA,EACpE,GAAG;AACL,CAAC;AAEI,MAAM,6BAA6B,MACxCA,IAAAA,IAAI,OAAoC;AAAA,EACtC,OAAOA,IAAAA,IACJ,aAAA,EACA;AAAA,IACC;AAAA,IACAA,IAAAA,IAAI,OAAO;AAAA,MACT,OAAOA,IAAAA,IAAI,QAAQ,MAAM,iCAAiC,EAAE,IAAI,CAAC,EAAE,SAAA;AAAA,IAAS,CAC7E;AAAA,IACDA,IAAAA,IAAI,OAAO;AAAA,MACT,OAAOA,IAAAA,IAAI,QAAQ,MAAM,iCAAiC,EAAE,IAAI,CAAC,EAAE,SAAA;AAAA,IAAS,CAC7E;AAAA,IACDA,IAAAA,IAAI,OAAO;AAAA,MACT,OAAOA,IAAAA,IAAI,QAAQ,MAAM,iCAAiC,EAAE,IAAI,CAAC,EAAE,SAAA;AAAA,IAAS,CAC7E;AAAA,IACDA,IAAAA,IAAI,OAAO;AAAA,MACT,KAAKA,IAAAA,IAAI,QAAQ,MAAM,iCAAiC,EAAE,IAAI,CAAC,EAAE,SAAA;AAAA,IAAS,CAC3E;AAAA,EAAA,EAEF,SAAA;AAAA,EACH,UAAUA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,CAAC,EAAE,SAAA;AAAA,EACzC,UAAUA,IAAAA,IAAI,OAAA,EAAS,IAAI,CAAC,EAAE,QAAQ,OAAO,gBAAgB,EAAE,SAAA;AAAA,EAC/D,aAAaA,IAAAA,IAAI,QAAA,EAAU,QAAQ,KAAK,EAAE,SAAA;AAAA,EAC1C,GAAG;AACL,CAAC;;;;;;;;;;;;"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
import { joi as zu } from "./joi.mjs";
|
|
2
|
+
const CommonModifiersSchema = {
|
|
3
|
+
nullable: zu.boolean().optional(),
|
|
4
|
+
readOnly: zu.boolean().optional(),
|
|
5
|
+
writeOnly: zu.boolean().optional()
|
|
6
|
+
};
|
|
7
|
+
const ResourcefulDataTypeInstanceSchema = zu.alternatives().try(
|
|
8
|
+
// String types
|
|
9
|
+
zu.object({
|
|
10
|
+
type: zu.string().valid("string").required(),
|
|
11
|
+
minLength: zu.number().min(0).default(0),
|
|
12
|
+
maxLength: zu.number().min(0).default(Number.MAX_SAFE_INTEGER),
|
|
13
|
+
pattern: zu.string().custom((value, helpers) => {
|
|
14
|
+
try {
|
|
15
|
+
new RegExp(value);
|
|
16
|
+
return value;
|
|
17
|
+
} catch (error) {
|
|
18
|
+
return helpers.error("any.invalid", { value });
|
|
19
|
+
}
|
|
20
|
+
}, "regex validation").allow("").optional(),
|
|
21
|
+
format: zu.string().disallow("date", "date-time", "binary").optional(),
|
|
22
|
+
enum: zu.array().items(zu.string()).optional()
|
|
23
|
+
}).append(CommonModifiersSchema),
|
|
24
|
+
// Date types
|
|
25
|
+
zu.object({
|
|
26
|
+
type: zu.string().valid("string").required(),
|
|
27
|
+
format: zu.string().valid("date").required()
|
|
28
|
+
}).append(CommonModifiersSchema),
|
|
29
|
+
// DateTime types
|
|
30
|
+
zu.object({
|
|
31
|
+
type: zu.string().valid("string").required(),
|
|
32
|
+
format: zu.string().valid("date-time").required()
|
|
33
|
+
}).append(CommonModifiersSchema),
|
|
34
|
+
// Binary types
|
|
35
|
+
zu.object({
|
|
36
|
+
type: zu.string().valid("string").required(),
|
|
37
|
+
format: zu.string().valid("binary").required(),
|
|
38
|
+
minLength: zu.number().min(0).default(0),
|
|
39
|
+
maxLength: zu.number().min(0).default(Number.MAX_SAFE_INTEGER)
|
|
40
|
+
}).append(CommonModifiersSchema),
|
|
41
|
+
// Number types
|
|
42
|
+
zu.object({
|
|
43
|
+
type: zu.string().valid("number").required(),
|
|
44
|
+
minimum: zu.number().optional(),
|
|
45
|
+
exclusiveMinimum: zu.boolean().default(false),
|
|
46
|
+
maximum: zu.number().optional(),
|
|
47
|
+
exclusiveMaximum: zu.boolean().default(false),
|
|
48
|
+
format: zu.string().valid("float", "double").optional(),
|
|
49
|
+
multipleOf: zu.number().min(0).default(1)
|
|
50
|
+
}).append(CommonModifiersSchema),
|
|
51
|
+
// Integer types
|
|
52
|
+
zu.object({
|
|
53
|
+
type: zu.string().valid("integer").required(),
|
|
54
|
+
minimum: zu.number().optional(),
|
|
55
|
+
exclusiveMinimum: zu.boolean().default(false),
|
|
56
|
+
maximum: zu.number().optional(),
|
|
57
|
+
exclusiveMaximum: zu.boolean().default(false),
|
|
58
|
+
format: zu.string().valid("int32", "int64").optional(),
|
|
59
|
+
multipleOf: zu.number().min(1).default(1)
|
|
60
|
+
}).append(CommonModifiersSchema),
|
|
61
|
+
// Boolean types
|
|
62
|
+
zu.object({
|
|
63
|
+
type: zu.string().valid("boolean").required()
|
|
64
|
+
}).append(CommonModifiersSchema),
|
|
65
|
+
// Object types
|
|
66
|
+
zu.object({
|
|
67
|
+
type: zu.string().valid("object").required(),
|
|
68
|
+
properties: zu.object().pattern(zu.string(), zu.link("#resourcefulDataType")).default({}),
|
|
69
|
+
required: zu.array().items(zu.string()).unique().custom((value, helpers) => {
|
|
70
|
+
var _a;
|
|
71
|
+
const properties = ((_a = helpers.state.ancestors[0]) == null ? void 0 : _a.properties) || {};
|
|
72
|
+
const propertyKeys = Object.keys(properties);
|
|
73
|
+
const invalidKeys = value.filter((key) => !propertyKeys.includes(key));
|
|
74
|
+
if (invalidKeys.length > 0) {
|
|
75
|
+
return helpers.error("any.custom", {
|
|
76
|
+
message: `Required keys [${invalidKeys.join(", ")}] are not defined in properties`
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return value;
|
|
80
|
+
}, "required keys validation").optional(),
|
|
81
|
+
additionalProperties: zu.alternatives(zu.boolean(), zu.link("#resourcefulDataType")).optional(),
|
|
82
|
+
minProperties: zu.number().min(0).default(0),
|
|
83
|
+
maxProperties: zu.number().min(0).default(Number.MAX_SAFE_INTEGER)
|
|
84
|
+
}).append(CommonModifiersSchema),
|
|
85
|
+
// Array types
|
|
86
|
+
zu.object({
|
|
87
|
+
type: zu.string().valid("array").required(),
|
|
88
|
+
items: zu.link("#resourcefulDataType").required(),
|
|
89
|
+
minItems: zu.number().min(0).default(0),
|
|
90
|
+
maxItems: zu.number().min(0).default(Number.MAX_SAFE_INTEGER),
|
|
91
|
+
uniqueItems: zu.boolean().default(false)
|
|
92
|
+
}).append(CommonModifiersSchema),
|
|
93
|
+
// Schema composition types
|
|
94
|
+
zu.object({
|
|
95
|
+
oneOf: zu.array().items(zu.link("#resourcefulDataType")).min(1).required()
|
|
96
|
+
}).append(CommonModifiersSchema),
|
|
97
|
+
zu.object({
|
|
98
|
+
allOf: zu.array().items(zu.link("#resourcefulDataType")).min(1).required()
|
|
99
|
+
}).append(CommonModifiersSchema),
|
|
100
|
+
zu.object({
|
|
101
|
+
anyOf: zu.array().items(zu.link("#resourcefulDataType")).min(1).required()
|
|
102
|
+
}).append(CommonModifiersSchema),
|
|
103
|
+
zu.object({
|
|
104
|
+
not: zu.array().items(zu.link("#resourcefulDataType")).min(1).required()
|
|
105
|
+
}).append(CommonModifiersSchema)
|
|
106
|
+
).id("resourcefulDataType");
|
|
107
|
+
const ResourcefulStringTypeSchema = () => zu.object({
|
|
108
|
+
minLength: zu.number().min(0).default(0),
|
|
109
|
+
maxLength: zu.number().min(0).default(Number.MAX_SAFE_INTEGER),
|
|
110
|
+
pattern: zu.string().custom((value, helpers) => {
|
|
111
|
+
try {
|
|
112
|
+
new RegExp(value);
|
|
113
|
+
return value;
|
|
114
|
+
} catch (error) {
|
|
115
|
+
return helpers.error("any.invalid", { value });
|
|
116
|
+
}
|
|
117
|
+
}, "regex validation").allow("").optional(),
|
|
118
|
+
format: zu.string().disallow("date", "date-time", "binary").optional(),
|
|
119
|
+
enum: zu.array().items(zu.string()).optional(),
|
|
120
|
+
...CommonModifiersSchema
|
|
121
|
+
});
|
|
122
|
+
const ResourcefulDateTypeSchema = () => zu.object({
|
|
123
|
+
...CommonModifiersSchema
|
|
124
|
+
});
|
|
125
|
+
const ResourcefulDateTimeTypeSchema = () => zu.object({
|
|
126
|
+
...CommonModifiersSchema
|
|
127
|
+
});
|
|
128
|
+
const ResourcefulBinaryTypeSchema = () => zu.object({
|
|
129
|
+
minLength: zu.number().min(0).default(0),
|
|
130
|
+
maxLength: zu.number().min(0).default(Number.MAX_SAFE_INTEGER),
|
|
131
|
+
...CommonModifiersSchema
|
|
132
|
+
});
|
|
133
|
+
const ResourcefulNumberTypeSchema = () => zu.object({
|
|
134
|
+
minimum: zu.number().default(0),
|
|
135
|
+
exclusiveMinimum: zu.boolean().default(false),
|
|
136
|
+
maximum: zu.number().default(Number.MAX_SAFE_INTEGER),
|
|
137
|
+
exclusiveMaximum: zu.boolean().default(false),
|
|
138
|
+
format: zu.string().valid("float", "double").optional(),
|
|
139
|
+
multipleOf: zu.number().min(0).default(1),
|
|
140
|
+
...CommonModifiersSchema
|
|
141
|
+
});
|
|
142
|
+
const ResourcefulIntegerTypeSchema = () => zu.object({
|
|
143
|
+
minimum: zu.number().default(0),
|
|
144
|
+
exclusiveMinimum: zu.boolean().default(false),
|
|
145
|
+
maximum: zu.number().default(Number.MAX_SAFE_INTEGER),
|
|
146
|
+
exclusiveMaximum: zu.boolean().default(false),
|
|
147
|
+
multipleOf: zu.number().min(1).default(1),
|
|
148
|
+
...CommonModifiersSchema
|
|
149
|
+
});
|
|
150
|
+
const ResourcefulBigintTypeSchema = () => zu.object({
|
|
151
|
+
minimum: zu.alternatives(zu.number().default(0), zu.bigint().default(BigInt(0))),
|
|
152
|
+
exclusiveMinimum: zu.boolean().default(false),
|
|
153
|
+
maximum: zu.alternatives(
|
|
154
|
+
zu.number().default(Number.MAX_SAFE_INTEGER),
|
|
155
|
+
zu.bigint().optional()
|
|
156
|
+
),
|
|
157
|
+
exclusiveMaximum: zu.boolean().default(false),
|
|
158
|
+
multipleOf: zu.alternatives(zu.number().min(1), zu.bigint().min(0n)).default(BigInt(1)),
|
|
159
|
+
...CommonModifiersSchema
|
|
160
|
+
});
|
|
161
|
+
const ResourcefulUnsignedIntegerTypeSchema = () => zu.object({
|
|
162
|
+
minimum: zu.number().min(0).default(0),
|
|
163
|
+
exclusiveMinimum: zu.boolean().default(false),
|
|
164
|
+
maximum: zu.number().default(Number.MAX_SAFE_INTEGER),
|
|
165
|
+
exclusiveMaximum: zu.boolean().default(false),
|
|
166
|
+
multipleOf: zu.number().min(1).default(1),
|
|
167
|
+
...CommonModifiersSchema
|
|
168
|
+
});
|
|
169
|
+
const ResourcefulBooleanTypeSchema = () => zu.object({
|
|
170
|
+
...CommonModifiersSchema
|
|
171
|
+
});
|
|
172
|
+
const ResourcefulObjectTypeSchema = () => zu.object({
|
|
173
|
+
properties: zu.object().pattern(zu.string(), ResourcefulDataTypeInstanceSchema).default({}),
|
|
174
|
+
required: zu.array().items(zu.string()).unique().custom((value, helpers) => {
|
|
175
|
+
var _a;
|
|
176
|
+
const properties = ((_a = helpers.state.ancestors[0]) == null ? void 0 : _a.properties) || {};
|
|
177
|
+
const propertyKeys = Object.keys(properties);
|
|
178
|
+
const invalidKeys = value.filter((key) => !propertyKeys.includes(key));
|
|
179
|
+
if (invalidKeys.length > 0) {
|
|
180
|
+
return helpers.error("any.custom", {
|
|
181
|
+
message: `Required keys [${invalidKeys.join(", ")}] are not defined in properties`
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
return value;
|
|
185
|
+
}, "required keys validation").optional(),
|
|
186
|
+
additionalProperties: zu.alternatives(zu.boolean(), ResourcefulDataTypeInstanceSchema).optional(),
|
|
187
|
+
minProperties: zu.number().min(0).default(0).optional(),
|
|
188
|
+
maxProperties: zu.number().min(0).default(Number.MAX_SAFE_INTEGER).optional(),
|
|
189
|
+
...CommonModifiersSchema
|
|
190
|
+
});
|
|
191
|
+
const ResourcefulArrayTypeSchema = () => zu.object({
|
|
192
|
+
items: zu.alternatives().try(
|
|
193
|
+
ResourcefulDataTypeInstanceSchema,
|
|
194
|
+
zu.object({
|
|
195
|
+
oneOf: zu.array().items(ResourcefulDataTypeInstanceSchema).min(1).required()
|
|
196
|
+
}),
|
|
197
|
+
zu.object({
|
|
198
|
+
allOf: zu.array().items(ResourcefulDataTypeInstanceSchema).min(1).required()
|
|
199
|
+
}),
|
|
200
|
+
zu.object({
|
|
201
|
+
anyOf: zu.array().items(ResourcefulDataTypeInstanceSchema).min(1).required()
|
|
202
|
+
}),
|
|
203
|
+
zu.object({
|
|
204
|
+
not: zu.array().items(ResourcefulDataTypeInstanceSchema).min(1).required()
|
|
205
|
+
})
|
|
206
|
+
).required(),
|
|
207
|
+
minItems: zu.number().min(0).default(0).optional(),
|
|
208
|
+
maxItems: zu.number().min(0).default(Number.MAX_SAFE_INTEGER).optional(),
|
|
209
|
+
uniqueItems: zu.boolean().default(false).optional(),
|
|
210
|
+
...CommonModifiersSchema
|
|
211
|
+
});
|
|
212
|
+
export {
|
|
213
|
+
ResourcefulStringTypeSchema as R,
|
|
214
|
+
ResourcefulDateTypeSchema as a,
|
|
215
|
+
ResourcefulDateTimeTypeSchema as b,
|
|
216
|
+
ResourcefulBinaryTypeSchema as c,
|
|
217
|
+
ResourcefulNumberTypeSchema as d,
|
|
218
|
+
ResourcefulIntegerTypeSchema as e,
|
|
219
|
+
ResourcefulBigintTypeSchema as f,
|
|
220
|
+
ResourcefulUnsignedIntegerTypeSchema as g,
|
|
221
|
+
ResourcefulBooleanTypeSchema as h,
|
|
222
|
+
ResourcefulObjectTypeSchema as i,
|
|
223
|
+
ResourcefulArrayTypeSchema as j
|
|
224
|
+
};
|
|
225
|
+
//# sourceMappingURL=data_type_schemas-Cpco9Zba.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data_type_schemas-Cpco9Zba.js","sources":["../src/private/data_type_schemas.ts"],"sourcesContent":["/*\n|--------------------------------------------------------------------------\n| Data Type Schemas\n|--------------------------------------------------------------------------\n|\n| Joi validation schemas for Resourceful data types. These schemas ensure\n| that data type options conform to OpenAPI 3.0 specifications and provide\n| runtime validation for the data type system.\n|\n*/\n\nimport { joi } from '@nhtio/lucid-resourceful/joi'\nimport type {\n ResourcefulStringTypeOptions,\n ResourcefulDateTypeOptions,\n ResourcefulDateTimeTypeOptions,\n ResourcefulBinaryTypeOptions,\n ResourcefulNumberTypeOptions,\n ResourcefulIntegerTypeOptions,\n ResourcefulBigintTypeOptions,\n ResourcefulUnsignedIntegerTypeOptions,\n ResourcefulBooleanTypeOptions,\n ResourcefulObjectTypeOptions,\n ResourcefulArrayTypeOptions,\n} from './data_types'\n\n/*\n|--------------------------------------------------------------------------\n| Reusable Schema Components\n|--------------------------------------------------------------------------\n|\n| These sub-schemas can be combined to create the main data type schemas\n| while maintaining strict validation and supporting OpenAPI patterns.\n|\n*/\n\n/** Common modifier properties that can be applied to any data type */\nconst CommonModifiersSchema = {\n nullable: joi.boolean().optional(),\n readOnly: joi.boolean().optional(),\n writeOnly: joi.boolean().optional(),\n}\n\n/** Base schema for a complete ResourcefulDataType instance (with type and modifiers) */\nconst ResourcefulDataTypeInstanceSchema = joi\n .alternatives()\n .try(\n // String types\n joi\n .object({\n type: joi.string().valid('string').required(),\n minLength: joi.number().min(0).default(0),\n maxLength: joi.number().min(0).default(Number.MAX_SAFE_INTEGER),\n pattern: joi\n .string()\n .custom((value, helpers) => {\n try {\n new RegExp(value)\n return value\n } catch (error) {\n /* istanbul ignore next */\n return helpers.error('any.invalid', { value })\n }\n }, 'regex validation')\n .allow('')\n .optional(),\n format: joi.string().disallow('date', 'date-time', 'binary').optional(),\n enum: joi.array().items(joi.string()).optional(),\n })\n .append(CommonModifiersSchema),\n // Date types\n joi\n .object({\n type: joi.string().valid('string').required(),\n format: joi.string().valid('date').required(),\n })\n .append(CommonModifiersSchema),\n // DateTime types\n joi\n .object({\n type: joi.string().valid('string').required(),\n format: joi.string().valid('date-time').required(),\n })\n .append(CommonModifiersSchema),\n // Binary types\n joi\n .object({\n type: joi.string().valid('string').required(),\n format: joi.string().valid('binary').required(),\n minLength: joi.number().min(0).default(0),\n maxLength: joi.number().min(0).default(Number.MAX_SAFE_INTEGER),\n })\n .append(CommonModifiersSchema),\n // Number types\n joi\n .object({\n type: joi.string().valid('number').required(),\n minimum: joi.number().optional(),\n exclusiveMinimum: joi.boolean().default(false),\n maximum: joi.number().optional(),\n exclusiveMaximum: joi.boolean().default(false),\n format: joi.string().valid('float', 'double').optional(),\n multipleOf: joi.number().min(0).default(1),\n })\n .append(CommonModifiersSchema),\n // Integer types\n joi\n .object({\n type: joi.string().valid('integer').required(),\n minimum: joi.number().optional(),\n exclusiveMinimum: joi.boolean().default(false),\n maximum: joi.number().optional(),\n exclusiveMaximum: joi.boolean().default(false),\n format: joi.string().valid('int32', 'int64').optional(),\n multipleOf: joi.number().min(1).default(1),\n })\n .append(CommonModifiersSchema),\n // Boolean types\n joi\n .object({\n type: joi.string().valid('boolean').required(),\n })\n .append(CommonModifiersSchema),\n // Object types\n joi\n .object({\n type: joi.string().valid('object').required(),\n properties: joi\n .object()\n .pattern(joi.string(), joi.link('#resourcefulDataType'))\n .default({}),\n required: joi\n .array()\n .items(joi.string())\n .unique()\n .custom((value, helpers) => {\n /* istanbul ignore next */\n const properties = helpers.state.ancestors[0]?.properties || {}\n const propertyKeys = Object.keys(properties)\n\n // Check that all required keys exist in properties\n const invalidKeys = value.filter((key: string) => !propertyKeys.includes(key))\n /* istanbul ignore next 5 */\n if (invalidKeys.length > 0) {\n return helpers.error('any.custom', {\n message: `Required keys [${invalidKeys.join(', ')}] are not defined in properties`,\n })\n }\n\n return value\n }, 'required keys validation')\n .optional(),\n additionalProperties: joi\n .alternatives(joi.boolean(), joi.link('#resourcefulDataType'))\n .optional(),\n minProperties: joi.number().min(0).default(0),\n maxProperties: joi.number().min(0).default(Number.MAX_SAFE_INTEGER),\n })\n .append(CommonModifiersSchema),\n // Array types\n joi\n .object({\n type: joi.string().valid('array').required(),\n items: joi.link('#resourcefulDataType').required(),\n minItems: joi.number().min(0).default(0),\n maxItems: joi.number().min(0).default(Number.MAX_SAFE_INTEGER),\n uniqueItems: joi.boolean().default(false),\n })\n .append(CommonModifiersSchema),\n // Schema composition types\n joi\n .object({\n oneOf: joi.array().items(joi.link('#resourcefulDataType')).min(1).required(),\n })\n .append(CommonModifiersSchema),\n joi\n .object({\n allOf: joi.array().items(joi.link('#resourcefulDataType')).min(1).required(),\n })\n .append(CommonModifiersSchema),\n joi\n .object({\n anyOf: joi.array().items(joi.link('#resourcefulDataType')).min(1).required(),\n })\n .append(CommonModifiersSchema),\n joi\n .object({\n not: joi.array().items(joi.link('#resourcefulDataType')).min(1).required(),\n })\n .append(CommonModifiersSchema)\n )\n .id('resourcefulDataType')\n\n/*\n|--------------------------------------------------------------------------\n| Individual Data Type Schemas\n|--------------------------------------------------------------------------\n|\n| Schemas for each specific data type with their individual validation rules\n|\n*/\n\nexport const ResourcefulStringTypeSchema = () =>\n joi.object<ResourcefulStringTypeOptions>({\n minLength: joi.number().min(0).default(0),\n maxLength: joi.number().min(0).default(Number.MAX_SAFE_INTEGER),\n pattern: joi\n .string()\n .custom((value, helpers) => {\n try {\n new RegExp(value)\n return value\n } catch (error) {\n return helpers.error('any.invalid', { value })\n }\n }, 'regex validation')\n .allow('')\n .optional(),\n format: joi.string().disallow('date', 'date-time', 'binary').optional(),\n enum: joi.array().items(joi.string()).optional(),\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulDateTypeSchema = () =>\n joi.object<ResourcefulDateTypeOptions>({\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulDateTimeTypeSchema = () =>\n joi.object<ResourcefulDateTimeTypeOptions>({\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulBinaryTypeSchema = () =>\n joi.object<ResourcefulBinaryTypeOptions>({\n minLength: joi.number().min(0).default(0),\n maxLength: joi.number().min(0).default(Number.MAX_SAFE_INTEGER),\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulNumberTypeSchema = () =>\n joi.object<ResourcefulNumberTypeOptions>({\n minimum: joi.number().default(0),\n exclusiveMinimum: joi.boolean().default(false),\n maximum: joi.number().default(Number.MAX_SAFE_INTEGER),\n exclusiveMaximum: joi.boolean().default(false),\n format: joi.string().valid('float', 'double').optional(),\n multipleOf: joi.number().min(0).default(1),\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulIntegerTypeSchema = () =>\n joi.object<ResourcefulIntegerTypeOptions>({\n minimum: joi.number().default(0),\n exclusiveMinimum: joi.boolean().default(false),\n maximum: joi.number().default(Number.MAX_SAFE_INTEGER),\n exclusiveMaximum: joi.boolean().default(false),\n multipleOf: joi.number().min(1).default(1),\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulBigintTypeSchema = () =>\n joi.object<ResourcefulBigintTypeOptions>({\n minimum: joi.alternatives(joi.number().default(0), joi.bigint().default(BigInt(0) as any)),\n exclusiveMinimum: joi.boolean().default(false),\n maximum: joi.alternatives(\n joi.number().default(Number.MAX_SAFE_INTEGER),\n joi.bigint().optional()\n ),\n exclusiveMaximum: joi.boolean().default(false),\n multipleOf: joi\n .alternatives(joi.number().min(1), joi.bigint().min(0n))\n .default(BigInt(1) as any),\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulUnsignedIntegerTypeSchema = () =>\n joi.object<ResourcefulUnsignedIntegerTypeOptions>({\n minimum: joi.number().min(0).default(0),\n exclusiveMinimum: joi.boolean().default(false),\n maximum: joi.number().default(Number.MAX_SAFE_INTEGER),\n exclusiveMaximum: joi.boolean().default(false),\n multipleOf: joi.number().min(1).default(1),\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulBooleanTypeSchema = () =>\n joi.object<ResourcefulBooleanTypeOptions>({\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulObjectTypeSchema = () =>\n joi.object<ResourcefulObjectTypeOptions>({\n properties: joi.object().pattern(joi.string(), ResourcefulDataTypeInstanceSchema).default({}),\n required: joi\n .array()\n .items(joi.string())\n .unique()\n .custom((value, helpers) => {\n /* istanbul ignore next */\n const properties = helpers.state.ancestors[0]?.properties || {}\n const propertyKeys = Object.keys(properties)\n\n // Check that all required keys exist in properties\n const invalidKeys = value.filter((key: string) => !propertyKeys.includes(key))\n /* istanbul ignore next 5 */\n if (invalidKeys.length > 0) {\n return helpers.error('any.custom', {\n message: `Required keys [${invalidKeys.join(', ')}] are not defined in properties`,\n })\n }\n\n return value\n }, 'required keys validation')\n .optional(),\n additionalProperties: joi\n .alternatives(joi.boolean(), ResourcefulDataTypeInstanceSchema)\n .optional(),\n minProperties: joi.number().min(0).default(0).optional(),\n maxProperties: joi.number().min(0).default(Number.MAX_SAFE_INTEGER).optional(),\n ...CommonModifiersSchema,\n })\n\nexport const ResourcefulArrayTypeSchema = () =>\n joi.object<ResourcefulArrayTypeOptions>({\n items: joi\n .alternatives()\n .try(\n ResourcefulDataTypeInstanceSchema,\n joi.object({\n oneOf: joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required(),\n }),\n joi.object({\n allOf: joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required(),\n }),\n joi.object({\n anyOf: joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required(),\n }),\n joi.object({\n not: joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required(),\n })\n )\n .required(),\n minItems: joi.number().min(0).default(0).optional(),\n maxItems: joi.number().min(0).default(Number.MAX_SAFE_INTEGER).optional(),\n uniqueItems: joi.boolean().default(false).optional(),\n ...CommonModifiersSchema,\n })\n"],"names":["joi"],"mappings":"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"}
|