@nhtio/lucid-resourceful 0.1.0-master-1570171e → 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.
Files changed (47) hide show
  1. package/{definitions-DgI468dW.cjs → data_type_schemas-BqeljaQB.cjs} +21 -177
  2. package/data_type_schemas-BqeljaQB.cjs.map +1 -0
  3. package/data_type_schemas-Cpco9Zba.js +225 -0
  4. package/data_type_schemas-Cpco9Zba.js.map +1 -0
  5. package/{decorator_utils-U_rZo8tv.cjs → decorator_utils-DSvYjLYD.cjs} +204 -60
  6. package/decorator_utils-DSvYjLYD.cjs.map +1 -0
  7. package/{decorator_utils-YSb1EGJ6.js → decorator_utils-gyymixlk.js} +207 -65
  8. package/decorator_utils-gyymixlk.js.map +1 -0
  9. package/definitions-DcB6B_4d.js +174 -0
  10. package/definitions-DcB6B_4d.js.map +1 -0
  11. package/definitions-DjQRkCeH.cjs +173 -0
  12. package/definitions-DjQRkCeH.cjs.map +1 -0
  13. package/definitions.cjs +1 -1
  14. package/definitions.mjs +11 -11
  15. package/{errors-B1rr67uM.js → errors-C-x5_jRE.js} +162 -27
  16. package/errors-C-x5_jRE.js.map +1 -0
  17. package/{errors-D8jb9VxY.cjs → errors-CNwuNhBV.cjs} +138 -5
  18. package/errors-CNwuNhBV.cjs.map +1 -0
  19. package/errors.cjs +5 -1
  20. package/errors.cjs.map +1 -1
  21. package/errors.d.ts +24 -2
  22. package/errors.mjs +19 -15
  23. package/index.cjs +1471 -771
  24. package/index.cjs.map +1 -1
  25. package/index.mjs +1716 -1016
  26. package/index.mjs.map +1 -1
  27. package/joi.cjs +1854 -3368
  28. package/joi.cjs.map +1 -1
  29. package/joi.mjs +1857 -3371
  30. package/joi.mjs.map +1 -1
  31. package/package.json +1 -1
  32. package/private/decorators.d.ts +8 -8
  33. package/private/lucene_to_lucid_translator.d.ts +21 -175
  34. package/private/mixin.d.ts +68 -5
  35. package/private/services/open_api_schema_service.d.ts +111 -0
  36. package/private/type_guards.d.ts +62 -0
  37. package/private/types.d.ts +1 -1
  38. package/private/utils.d.ts +24 -0
  39. package/utils.cjs +1 -1
  40. package/utils.mjs +2 -2
  41. package/decorator_utils-U_rZo8tv.cjs.map +0 -1
  42. package/decorator_utils-YSb1EGJ6.js.map +0 -1
  43. package/definitions-B88XBTUF.js +0 -381
  44. package/definitions-B88XBTUF.js.map +0 -1
  45. package/definitions-DgI468dW.cjs.map +0 -1
  46. package/errors-B1rr67uM.js.map +0 -1
  47. 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().invalid("date", "date-time", "binary").optional(),
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().invalid("date", "date-time", "binary").optional(),
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.number().default(Number.MAX_SAFE_INTEGER),
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
- const generateResourcefulDataTypeClass = (name, type, resolver, staticDefinitions = {}) => {
212
- const schema = resolver();
213
- const Base = class {
214
- constructor(options = {}) {
215
- const { error, value } = schema.validate(options, {
216
- abortEarly: false,
217
- convert: true,
218
- allowUnknown: false
219
- });
220
- if (error) {
221
- throw new errors.E_INVALID_RESOURCEFUL_DATA_TYPE_OPTIONS(name, error);
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":"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"}
@@ -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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"}