@nhtio/lucid-resourceful 1.20250718.1 → 1.20250724.0

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.
@@ -1,18 +1,18 @@
1
1
  "use strict";
2
2
  const errors = require("./errors-D8jb9VxY.cjs");
3
- const index = require("./index-Cv6KC1rC.cjs");
3
+ const joi = require("./joi.cjs");
4
4
  const CommonModifiersSchema = {
5
- nullable: index.joi.boolean().optional(),
6
- readOnly: index.joi.boolean().optional(),
7
- writeOnly: index.joi.boolean().optional()
5
+ nullable: joi.joi.boolean().optional(),
6
+ readOnly: joi.joi.boolean().optional(),
7
+ writeOnly: joi.joi.boolean().optional()
8
8
  };
9
- const ResourcefulDataTypeInstanceSchema = index.joi.alternatives().try(
9
+ const ResourcefulDataTypeInstanceSchema = joi.joi.alternatives().try(
10
10
  // String types
11
- index.joi.object({
12
- type: index.joi.string().valid("string").required(),
13
- minLength: index.joi.number().min(0).default(0),
14
- maxLength: index.joi.number().min(0).default(Number.MAX_SAFE_INTEGER),
15
- pattern: index.joi.string().custom((value, helpers) => {
11
+ joi.joi.object({
12
+ type: joi.joi.string().valid("string").required(),
13
+ minLength: joi.joi.number().min(0).default(0),
14
+ maxLength: joi.joi.number().min(0).default(Number.MAX_SAFE_INTEGER),
15
+ pattern: joi.joi.string().custom((value, helpers) => {
16
16
  try {
17
17
  new RegExp(value);
18
18
  return value;
@@ -20,55 +20,55 @@ const ResourcefulDataTypeInstanceSchema = index.joi.alternatives().try(
20
20
  return helpers.error("any.invalid", { value });
21
21
  }
22
22
  }, "regex validation").allow("").optional(),
23
- format: index.joi.string().invalid("date", "date-time", "binary").optional(),
24
- enum: index.joi.array().items(index.joi.string()).optional()
23
+ format: joi.joi.string().invalid("date", "date-time", "binary").optional(),
24
+ enum: joi.joi.array().items(joi.joi.string()).optional()
25
25
  }).append(CommonModifiersSchema),
26
26
  // Date types
27
- index.joi.object({
28
- type: index.joi.string().valid("string").required(),
29
- format: index.joi.string().valid("date").required()
27
+ joi.joi.object({
28
+ type: joi.joi.string().valid("string").required(),
29
+ format: joi.joi.string().valid("date").required()
30
30
  }).append(CommonModifiersSchema),
31
31
  // DateTime types
32
- index.joi.object({
33
- type: index.joi.string().valid("string").required(),
34
- format: index.joi.string().valid("date-time").required()
32
+ joi.joi.object({
33
+ type: joi.joi.string().valid("string").required(),
34
+ format: joi.joi.string().valid("date-time").required()
35
35
  }).append(CommonModifiersSchema),
36
36
  // Binary types
37
- index.joi.object({
38
- type: index.joi.string().valid("string").required(),
39
- format: index.joi.string().valid("binary").required(),
40
- minLength: index.joi.number().min(0).default(0),
41
- maxLength: index.joi.number().min(0).default(Number.MAX_SAFE_INTEGER)
37
+ joi.joi.object({
38
+ type: joi.joi.string().valid("string").required(),
39
+ format: joi.joi.string().valid("binary").required(),
40
+ minLength: joi.joi.number().min(0).default(0),
41
+ maxLength: joi.joi.number().min(0).default(Number.MAX_SAFE_INTEGER)
42
42
  }).append(CommonModifiersSchema),
43
43
  // Number types
44
- index.joi.object({
45
- type: index.joi.string().valid("number").required(),
46
- minimum: index.joi.number().optional(),
47
- exclusiveMinimum: index.joi.boolean().default(false),
48
- maximum: index.joi.number().optional(),
49
- exclusiveMaximum: index.joi.boolean().default(false),
50
- format: index.joi.string().valid("float", "double").optional(),
51
- multipleOf: index.joi.number().min(0).default(1)
44
+ joi.joi.object({
45
+ type: joi.joi.string().valid("number").required(),
46
+ minimum: joi.joi.number().optional(),
47
+ exclusiveMinimum: joi.joi.boolean().default(false),
48
+ maximum: joi.joi.number().optional(),
49
+ exclusiveMaximum: joi.joi.boolean().default(false),
50
+ format: joi.joi.string().valid("float", "double").optional(),
51
+ multipleOf: joi.joi.number().min(0).default(1)
52
52
  }).append(CommonModifiersSchema),
53
53
  // Integer types
54
- index.joi.object({
55
- type: index.joi.string().valid("integer").required(),
56
- minimum: index.joi.number().optional(),
57
- exclusiveMinimum: index.joi.boolean().default(false),
58
- maximum: index.joi.number().optional(),
59
- exclusiveMaximum: index.joi.boolean().default(false),
60
- format: index.joi.string().valid("int32", "int64").optional(),
61
- multipleOf: index.joi.number().min(1).default(1)
54
+ joi.joi.object({
55
+ type: joi.joi.string().valid("integer").required(),
56
+ minimum: joi.joi.number().optional(),
57
+ exclusiveMinimum: joi.joi.boolean().default(false),
58
+ maximum: joi.joi.number().optional(),
59
+ exclusiveMaximum: joi.joi.boolean().default(false),
60
+ format: joi.joi.string().valid("int32", "int64").optional(),
61
+ multipleOf: joi.joi.number().min(1).default(1)
62
62
  }).append(CommonModifiersSchema),
63
63
  // Boolean types
64
- index.joi.object({
65
- type: index.joi.string().valid("boolean").required()
64
+ joi.joi.object({
65
+ type: joi.joi.string().valid("boolean").required()
66
66
  }).append(CommonModifiersSchema),
67
67
  // Object types
68
- index.joi.object({
69
- type: index.joi.string().valid("object").required(),
70
- properties: index.joi.object().pattern(index.joi.string(), index.joi.link("#resourcefulDataType")).default({}),
71
- required: index.joi.array().items(index.joi.string()).unique().custom((value, helpers) => {
68
+ joi.joi.object({
69
+ type: joi.joi.string().valid("object").required(),
70
+ properties: joi.joi.object().pattern(joi.joi.string(), joi.joi.link("#resourcefulDataType")).default({}),
71
+ required: joi.joi.array().items(joi.joi.string()).unique().custom((value, helpers) => {
72
72
  var _a;
73
73
  const properties = ((_a = helpers.state.ancestors[0]) == null ? void 0 : _a.properties) || {};
74
74
  const propertyKeys = Object.keys(properties);
@@ -80,36 +80,36 @@ const ResourcefulDataTypeInstanceSchema = index.joi.alternatives().try(
80
80
  }
81
81
  return value;
82
82
  }, "required keys validation").optional(),
83
- additionalProperties: index.joi.alternatives(index.joi.boolean(), index.joi.link("#resourcefulDataType")).optional(),
84
- minProperties: index.joi.number().min(0).default(0),
85
- maxProperties: index.joi.number().min(0).default(Number.MAX_SAFE_INTEGER)
83
+ additionalProperties: joi.joi.alternatives(joi.joi.boolean(), joi.joi.link("#resourcefulDataType")).optional(),
84
+ minProperties: joi.joi.number().min(0).default(0),
85
+ maxProperties: joi.joi.number().min(0).default(Number.MAX_SAFE_INTEGER)
86
86
  }).append(CommonModifiersSchema),
87
87
  // Array types
88
- index.joi.object({
89
- type: index.joi.string().valid("array").required(),
90
- items: index.joi.link("#resourcefulDataType").required(),
91
- minItems: index.joi.number().min(0).default(0),
92
- maxItems: index.joi.number().min(0).default(Number.MAX_SAFE_INTEGER),
93
- uniqueItems: index.joi.boolean().default(false)
88
+ joi.joi.object({
89
+ type: joi.joi.string().valid("array").required(),
90
+ items: joi.joi.link("#resourcefulDataType").required(),
91
+ minItems: joi.joi.number().min(0).default(0),
92
+ maxItems: joi.joi.number().min(0).default(Number.MAX_SAFE_INTEGER),
93
+ uniqueItems: joi.joi.boolean().default(false)
94
94
  }).append(CommonModifiersSchema),
95
95
  // Schema composition types
96
- index.joi.object({
97
- oneOf: index.joi.array().items(index.joi.link("#resourcefulDataType")).min(1).required()
96
+ joi.joi.object({
97
+ oneOf: joi.joi.array().items(joi.joi.link("#resourcefulDataType")).min(1).required()
98
98
  }).append(CommonModifiersSchema),
99
- index.joi.object({
100
- allOf: index.joi.array().items(index.joi.link("#resourcefulDataType")).min(1).required()
99
+ joi.joi.object({
100
+ allOf: joi.joi.array().items(joi.joi.link("#resourcefulDataType")).min(1).required()
101
101
  }).append(CommonModifiersSchema),
102
- index.joi.object({
103
- anyOf: index.joi.array().items(index.joi.link("#resourcefulDataType")).min(1).required()
102
+ joi.joi.object({
103
+ anyOf: joi.joi.array().items(joi.joi.link("#resourcefulDataType")).min(1).required()
104
104
  }).append(CommonModifiersSchema),
105
- index.joi.object({
106
- not: index.joi.link("#resourcefulDataType").required()
105
+ joi.joi.object({
106
+ not: joi.joi.link("#resourcefulDataType").required()
107
107
  }).append(CommonModifiersSchema)
108
108
  ).id("resourcefulDataType");
109
- const ResourcefulStringTypeSchema = () => index.joi.object({
110
- minLength: index.joi.number().min(0).default(0),
111
- maxLength: index.joi.number().min(0).default(Number.MAX_SAFE_INTEGER),
112
- pattern: index.joi.string().custom((value, helpers) => {
109
+ const ResourcefulStringTypeSchema = () => joi.joi.object({
110
+ minLength: joi.joi.number().min(0).default(0),
111
+ maxLength: joi.joi.number().min(0).default(Number.MAX_SAFE_INTEGER),
112
+ pattern: joi.joi.string().custom((value, helpers) => {
113
113
  try {
114
114
  new RegExp(value);
115
115
  return value;
@@ -117,60 +117,60 @@ const ResourcefulStringTypeSchema = () => index.joi.object({
117
117
  return helpers.error("any.invalid", { value });
118
118
  }
119
119
  }, "regex validation").allow("").optional(),
120
- format: index.joi.string().invalid("date", "date-time", "binary").optional(),
121
- enum: index.joi.array().items(index.joi.string()).optional(),
120
+ format: joi.joi.string().invalid("date", "date-time", "binary").optional(),
121
+ enum: joi.joi.array().items(joi.joi.string()).optional(),
122
122
  ...CommonModifiersSchema
123
123
  });
124
- const ResourcefulDateTypeSchema = () => index.joi.object({
124
+ const ResourcefulDateTypeSchema = () => joi.joi.object({
125
125
  ...CommonModifiersSchema
126
126
  });
127
- const ResourcefulDateTimeTypeSchema = () => index.joi.object({
127
+ const ResourcefulDateTimeTypeSchema = () => joi.joi.object({
128
128
  ...CommonModifiersSchema
129
129
  });
130
- const ResourcefulBinaryTypeSchema = () => index.joi.object({
131
- minLength: index.joi.number().min(0).default(0),
132
- maxLength: index.joi.number().min(0).default(Number.MAX_SAFE_INTEGER),
130
+ const ResourcefulBinaryTypeSchema = () => joi.joi.object({
131
+ minLength: joi.joi.number().min(0).default(0),
132
+ maxLength: joi.joi.number().min(0).default(Number.MAX_SAFE_INTEGER),
133
133
  ...CommonModifiersSchema
134
134
  });
135
- const ResourcefulNumberTypeSchema = () => index.joi.object({
136
- minimum: index.joi.number().default(0),
137
- exclusiveMinimum: index.joi.boolean().default(false),
138
- maximum: index.joi.number().default(Number.MAX_SAFE_INTEGER),
139
- exclusiveMaximum: index.joi.boolean().default(false),
140
- format: index.joi.string().valid("float", "double").optional(),
141
- multipleOf: index.joi.number().min(0).default(1),
135
+ const ResourcefulNumberTypeSchema = () => joi.joi.object({
136
+ minimum: joi.joi.number().default(0),
137
+ exclusiveMinimum: joi.joi.boolean().default(false),
138
+ maximum: joi.joi.number().default(Number.MAX_SAFE_INTEGER),
139
+ exclusiveMaximum: joi.joi.boolean().default(false),
140
+ format: joi.joi.string().valid("float", "double").optional(),
141
+ multipleOf: joi.joi.number().min(0).default(1),
142
142
  ...CommonModifiersSchema
143
143
  });
144
- const ResourcefulIntegerTypeSchema = () => index.joi.object({
145
- minimum: index.joi.number().default(0),
146
- exclusiveMinimum: index.joi.boolean().default(false),
147
- maximum: index.joi.number().default(Number.MAX_SAFE_INTEGER),
148
- exclusiveMaximum: index.joi.boolean().default(false),
149
- multipleOf: index.joi.number().min(1).default(1),
144
+ const ResourcefulIntegerTypeSchema = () => joi.joi.object({
145
+ minimum: joi.joi.number().default(0),
146
+ exclusiveMinimum: joi.joi.boolean().default(false),
147
+ maximum: joi.joi.number().default(Number.MAX_SAFE_INTEGER),
148
+ exclusiveMaximum: joi.joi.boolean().default(false),
149
+ multipleOf: joi.joi.number().min(1).default(1),
150
150
  ...CommonModifiersSchema
151
151
  });
152
- const ResourcefulBigintTypeSchema = () => index.joi.object({
153
- minimum: index.joi.number().default(0),
154
- exclusiveMinimum: index.joi.boolean().default(false),
155
- maximum: index.joi.number().default(Number.MAX_SAFE_INTEGER),
156
- exclusiveMaximum: index.joi.boolean().default(false),
157
- multipleOf: index.joi.number().min(1).default(1),
152
+ const ResourcefulBigintTypeSchema = () => joi.joi.object({
153
+ minimum: joi.joi.number().default(0),
154
+ exclusiveMinimum: joi.joi.boolean().default(false),
155
+ maximum: joi.joi.number().default(Number.MAX_SAFE_INTEGER),
156
+ exclusiveMaximum: joi.joi.boolean().default(false),
157
+ multipleOf: joi.joi.number().min(1).default(1),
158
158
  ...CommonModifiersSchema
159
159
  });
160
- const ResourcefulUnsignedIntegerTypeSchema = () => index.joi.object({
161
- minimum: index.joi.number().min(0).default(0),
162
- exclusiveMinimum: index.joi.boolean().default(false),
163
- maximum: index.joi.number().default(Number.MAX_SAFE_INTEGER),
164
- exclusiveMaximum: index.joi.boolean().default(false),
165
- multipleOf: index.joi.number().min(1).default(1),
160
+ const ResourcefulUnsignedIntegerTypeSchema = () => joi.joi.object({
161
+ minimum: joi.joi.number().min(0).default(0),
162
+ exclusiveMinimum: joi.joi.boolean().default(false),
163
+ maximum: joi.joi.number().default(Number.MAX_SAFE_INTEGER),
164
+ exclusiveMaximum: joi.joi.boolean().default(false),
165
+ multipleOf: joi.joi.number().min(1).default(1),
166
166
  ...CommonModifiersSchema
167
167
  });
168
- const ResourcefulBooleanTypeSchema = () => index.joi.object({
168
+ const ResourcefulBooleanTypeSchema = () => joi.joi.object({
169
169
  ...CommonModifiersSchema
170
170
  });
171
- const ResourcefulObjectTypeSchema = () => index.joi.object({
172
- properties: index.joi.object().pattern(index.joi.string(), ResourcefulDataTypeInstanceSchema).default({}),
173
- required: index.joi.array().items(index.joi.string()).unique().custom((value, helpers) => {
171
+ const ResourcefulObjectTypeSchema = () => joi.joi.object({
172
+ properties: joi.joi.object().pattern(joi.joi.string(), ResourcefulDataTypeInstanceSchema).default({}),
173
+ required: joi.joi.array().items(joi.joi.string()).unique().custom((value, helpers) => {
174
174
  var _a;
175
175
  const properties = ((_a = helpers.state.ancestors[0]) == null ? void 0 : _a.properties) || {};
176
176
  const propertyKeys = Object.keys(properties);
@@ -182,30 +182,30 @@ const ResourcefulObjectTypeSchema = () => index.joi.object({
182
182
  }
183
183
  return value;
184
184
  }, "required keys validation").optional(),
185
- additionalProperties: index.joi.alternatives(index.joi.boolean(), ResourcefulDataTypeInstanceSchema).optional(),
186
- minProperties: index.joi.number().min(0).default(0).optional(),
187
- maxProperties: index.joi.number().min(0).default(Number.MAX_SAFE_INTEGER).optional(),
185
+ additionalProperties: joi.joi.alternatives(joi.joi.boolean(), ResourcefulDataTypeInstanceSchema).optional(),
186
+ minProperties: joi.joi.number().min(0).default(0).optional(),
187
+ maxProperties: joi.joi.number().min(0).default(Number.MAX_SAFE_INTEGER).optional(),
188
188
  ...CommonModifiersSchema
189
189
  });
190
- const ResourcefulArrayTypeSchema = () => index.joi.object({
191
- items: index.joi.alternatives().try(
190
+ const ResourcefulArrayTypeSchema = () => joi.joi.object({
191
+ items: joi.joi.alternatives().try(
192
192
  ResourcefulDataTypeInstanceSchema,
193
- index.joi.object({
194
- oneOf: index.joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required()
193
+ joi.joi.object({
194
+ oneOf: joi.joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required()
195
195
  }),
196
- index.joi.object({
197
- allOf: index.joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required()
196
+ joi.joi.object({
197
+ allOf: joi.joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required()
198
198
  }),
199
- index.joi.object({
200
- anyOf: index.joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required()
199
+ joi.joi.object({
200
+ anyOf: joi.joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required()
201
201
  }),
202
- index.joi.object({
203
- not: index.joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required()
202
+ joi.joi.object({
203
+ not: joi.joi.array().items(ResourcefulDataTypeInstanceSchema).min(1).required()
204
204
  })
205
205
  ).required(),
206
- minItems: index.joi.number().min(0).default(0).optional(),
207
- maxItems: index.joi.number().min(0).default(Number.MAX_SAFE_INTEGER).optional(),
208
- uniqueItems: index.joi.boolean().default(false).optional(),
206
+ minItems: joi.joi.number().min(0).default(0).optional(),
207
+ maxItems: joi.joi.number().min(0).default(Number.MAX_SAFE_INTEGER).optional(),
208
+ uniqueItems: joi.joi.boolean().default(false).optional(),
209
209
  ...CommonModifiersSchema
210
210
  });
211
211
  const generateResourcefulDataTypeClass = (name, type, resolver, staticDefinitions = {}) => {
@@ -377,4 +377,4 @@ exports.ResourcefulObjectType = ResourcefulObjectType;
377
377
  exports.ResourcefulStringType = ResourcefulStringType;
378
378
  exports.ResourcefulUnsignedIntegerType = ResourcefulUnsignedIntegerType;
379
379
  exports.definitions = definitions;
380
- //# sourceMappingURL=definitions-BrN-oCRI.cjs.map
380
+ //# sourceMappingURL=definitions-DgI468dW.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"definitions-BrN-oCRI.cjs","sources":["../src/private/data_type_schemas.ts","../src/private/data_types.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 /* v8 ignore start */\n } catch (error) {\n return helpers.error('any.invalid', { value })\n }\n /* v8 ignore stop */\n }, 'regex validation')\n .allow('')\n .optional(),\n format: joi.string().invalid('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 /* v8 ignore start */\n const properties = helpers.state.ancestors[0]?.properties || {}\n /* v8 ignore stop */\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 /* v8 ignore start */\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 /* v8 ignore stop */\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.link('#resourcefulDataType').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().invalid('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.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 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 /* v8 ignore start */\n const properties = helpers.state.ancestors[0]?.properties || {}\n /* v8 ignore stop */\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 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","/*\n|--------------------------------------------------------------------------\n| Column Data Types\n|--------------------------------------------------------------------------\n|\n| Classes which are used to define the data types of columns in\n| Lucid models that have been extended with the Resourceful mixin.\n|\n| Based on OpenAPI 3.0 Specifications found at:\n| https://swagger.io/docs/specification/v3_0/data-models/data-types/\n*/\n\nimport { E_INVALID_RESOURCEFUL_DATA_TYPE_OPTIONS } from '@nhtio/lucid-resourceful/errors'\nimport {\n ResourcefulStringTypeSchema,\n ResourcefulDateTypeSchema,\n ResourcefulDateTimeTypeSchema,\n ResourcefulBinaryTypeSchema,\n ResourcefulNumberTypeSchema,\n ResourcefulIntegerTypeSchema,\n ResourcefulBigintTypeSchema,\n ResourcefulUnsignedIntegerTypeSchema,\n ResourcefulBooleanTypeSchema,\n ResourcefulObjectTypeSchema,\n ResourcefulArrayTypeSchema,\n} from './data_type_schemas'\nimport type { ObjectSchema } from 'joi'\n\n/**\n * Base interface for all Resourceful data type options.\n * Includes common modifier properties that apply to all data types.\n */\nexport interface BaseInterface {\n /** Whether the value can be null */\n nullable?: boolean\n /** Whether the property is read-only (not included in create/update operations) */\n readOnly?: boolean\n /** Whether the property is write-only (not included in response serialization) */\n writeOnly?: boolean\n}\n\n/**\n * Base type constraint for abstract constructor functions used in data type generation.\n */\nexport type BaseClass = abstract new (...args: any[]) => any\n\n/**\n * A hybrid type that represents a constructor function which can be called both with and without the `new` keyword.\n * This type enables creating data type classes that work as both constructors and factory functions.\n *\n * @typeParam ClassConstructorOptions - The interface defining the constructor options for the class\n * @typeParam C - The abstract constructor type constraint\n */\nexport type CallableNewable<\n ClassConstructorOptions extends BaseInterface,\n C extends BaseClass = BaseClass,\n> = {\n readonly schema: ObjectSchema<ClassConstructorOptions>\n new (...args: ConstructorParameters<C>): InstanceType<C>\n} & { (...args: ConstructorParameters<C>): InstanceType<C> } & { prototype: InstanceType<C> }\n\nconst generateResourcefulDataTypeClass = <\n ClassConstructorOptions extends BaseInterface,\n C extends BaseClass = BaseClass,\n>(\n name: string,\n type: string,\n resolver: () => ObjectSchema<ClassConstructorOptions>,\n staticDefinitions: { [key: string]: any } = {}\n): CallableNewable<ClassConstructorOptions, C> => {\n const schema = resolver()\n const Base = class {\n declare static readonly schema: ObjectSchema<ClassConstructorOptions>\n constructor(options: Partial<ClassConstructorOptions> = {}) {\n const { error, value } = schema.validate(options, {\n abortEarly: false,\n convert: true,\n allowUnknown: false,\n })\n if (error) {\n throw new E_INVALID_RESOURCEFUL_DATA_TYPE_OPTIONS(name, error)\n }\n Object.defineProperty(this, 'type', {\n value: type,\n writable: false,\n enumerable: true,\n configurable: false,\n })\n Object.entries(value).forEach(([key, val]) => {\n Object.defineProperty(this, key, {\n value: val,\n writable: false,\n enumerable: true,\n configurable: false,\n })\n })\n Object.entries(staticDefinitions).forEach(([key, val]) => {\n Object.defineProperty(this, key, {\n value: val,\n writable: false,\n enumerable: true,\n configurable: false,\n })\n })\n }\n\n get [Symbol.toStringTag]() {\n return JSON.stringify(this)\n }\n\n toString(): string {\n return JSON.stringify(this)\n }\n\n // toObject(): { [key: string]: any } {\n // const ret: { [key: string]: any } = {\n // type,\n // }\n // for (const key of Object.getOwnPropertyNames(this)) {\n // if (key !== 'constructor' && key !== 'toString' && key !== 'toObject') {\n // ret[key] = (this as any)[key]\n // }\n // }\n // Object.entries(staticDefinitions).forEach(([key, val]) => {\n // ret[key] = val\n // })\n // return ret\n // }\n } as unknown as C\n Object.defineProperty(Base, 'name', {\n value: name,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n Object.defineProperty(Base, 'schema', {\n value: schema,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n const Fn: any = function (this: any, ...args: any[]) {\n if (!new.target) {\n return new (Fn as any)(...args)\n }\n return new (Base as any)(...args)\n }\n Fn.prototype = Object.create(Base.prototype)\n Fn.prototype.constructor = Fn\n for (const key of Object.getOwnPropertyNames(Base)) {\n if (key !== 'prototype' && key !== 'name' && key !== 'length') {\n Object.defineProperty(Fn, key, Object.getOwnPropertyDescriptor(Base, key)!)\n }\n }\n return Fn as CallableNewable<ClassConstructorOptions, C>\n}\n\n/**\n * Supported string formats for ResourcefulStringType, excluding OpenAPI reserved formats.\n * These formats provide additional validation and documentation for string fields.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport const ResourcefulStringFormat = ['password', 'byte'] as const\n\n/**\n * Union type of supported string formats for ResourcefulStringType.\n * Used to provide type safety when specifying string field formats.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport type ResourcefulStringFormat = (typeof ResourcefulStringFormat)[number]\n\n/**\n * Configuration options for ResourcefulStringType instances.\n * Defines validation rules and constraints for string-based fields in OpenAPI schemas.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulStringTypeOptions extends BaseInterface {\n /** Minimum length constraint for the string value */\n minLength: number\n /** Maximum length constraint for the string value */\n maxLength: number\n /** Regular expression pattern that the string value must match */\n pattern?: string\n /** String format specification, excluding OpenAPI reserved formats like date, date-time, and binary */\n format?:\n | ResourcefulStringFormat\n | Exclude<string, 'date' | 'date-time' | 'password' | 'byte' | 'binary'>\n /** Array of allowed string values for enumeration validation */\n enum?: string[]\n}\n\n/**\n * Callable constructor for creating validated string type instances.\n * Supports both constructor and function call patterns for flexible usage.\n *\n * @example\n * ```typescript\n * const stringType = new ResourcefulStringType({ minLength: 1, maxLength: 100 })\n * const stringType2 = ResourcefulStringType({ pattern: '^[a-zA-Z]+$' })\n * ```\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport const ResourcefulStringType = generateResourcefulDataTypeClass<ResourcefulStringTypeOptions>(\n 'ResourcefulStringType',\n 'string',\n ResourcefulStringTypeSchema\n)\n\n/**\n * Instance type for ResourcefulStringType with validated properties.\n * Represents a string data type with validation constraints as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulStringType extends ResourcefulStringTypeOptions {\n type: 'string'\n}\n\n/**\n * Configuration options for ResourcefulDateType instances.\n * Represents date-only values formatted as ISO 8601 date strings.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulDateTypeOptions extends BaseInterface {}\n\n/**\n * Callable constructor for creating validated date type instances.\n * Automatically sets the OpenAPI format to 'date' for ISO 8601 date strings.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport const ResourcefulDateType = generateResourcefulDataTypeClass<ResourcefulDateTypeOptions>(\n 'ResourcefulDateType',\n 'string',\n ResourcefulDateTypeSchema,\n { format: 'date' }\n)\n\n/**\n * Instance type for ResourcefulDateType with validated properties.\n * Represents a date-only value formatted as ISO 8601 date string as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulDateType extends ResourcefulDateTypeOptions {\n type: 'string'\n format: 'date'\n}\n\n/**\n * Configuration options for ResourcefulDateTimeType instances.\n * Represents date-time values formatted as ISO 8601 date-time strings.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulDateTimeTypeOptions extends BaseInterface {}\n\n/**\n * Callable constructor for creating validated date-time type instances.\n * Automatically sets the OpenAPI format to 'date-time' for ISO 8601 date-time strings.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport const ResourcefulDateTimeType =\n generateResourcefulDataTypeClass<ResourcefulDateTimeTypeOptions>(\n 'ResourcefulDateTimeType',\n 'string',\n ResourcefulDateTimeTypeSchema,\n { format: 'date-time' }\n )\n\n/**\n * Instance type for ResourcefulDateTimeType with validated properties.\n * Represents a date-time value formatted as ISO 8601 date-time string as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulDateTimeType extends ResourcefulDateTimeTypeOptions {\n type: 'string'\n format: 'date-time'\n}\n\n/**\n * Configuration options for ResourcefulBinaryType instances.\n * Defines constraints for binary data represented as base64-encoded strings.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulBinaryTypeOptions extends BaseInterface {\n /** Minimum length constraint for the base64-encoded binary data */\n minLength: number\n /** Maximum length constraint for the base64-encoded binary data */\n maxLength: number\n}\n\n/**\n * Callable constructor for creating validated binary type instances.\n * Automatically sets the OpenAPI format to 'binary' for base64-encoded binary data.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport const ResourcefulBinaryType = generateResourcefulDataTypeClass<ResourcefulBinaryTypeOptions>(\n 'ResourcefulBinaryType',\n 'string',\n ResourcefulBinaryTypeSchema,\n { format: 'binary' }\n)\n\n/**\n * Instance type for ResourcefulBinaryType with validated properties.\n * Represents binary data as base64-encoded string as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulBinaryType extends ResourcefulBinaryTypeOptions {\n type: 'string'\n format: 'binary'\n}\n\n/**\n * Supported number formats for ResourcefulNumberType, following OpenAPI 3.0 specification.\n * These formats provide additional precision and validation for numeric fields.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Number Type}\n */\nexport const ResourcefulNumberFormat = ['float', 'double'] as const\n\n/**\n * Union type of supported number formats for ResourcefulNumberType.\n * Used to provide type safety when specifying numeric field formats.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Number Type}\n */\nexport type ResourcefulNumberFormat = (typeof ResourcefulNumberFormat)[number]\n\n/**\n * Configuration options for ResourcefulNumberType instances.\n * Defines validation rules and constraints for numeric fields in OpenAPI schemas.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Number Type}\n */\nexport interface ResourcefulNumberTypeOptions extends BaseInterface {\n /** Minimum value constraint for the number */\n minimum: number\n /** Whether the minimum value is exclusive (value must be greater than minimum) */\n exclusiveMinimum: boolean\n /** Maximum value constraint for the number */\n maximum: number\n /** Whether the maximum value is exclusive (value must be less than maximum) */\n exclusiveMaximum: boolean\n /** Number format specification for precision (float or double) */\n format: ResourcefulNumberFormat\n /** Value must be a multiple of this number */\n multipleOf: number\n}\n\n/**\n * Callable constructor for creating validated number type instances.\n * Supports floating-point numbers with configurable precision and range constraints.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Number Type}\n */\nexport const ResourcefulNumberType = generateResourcefulDataTypeClass<ResourcefulNumberTypeOptions>(\n 'ResourcefulNumberType',\n 'number',\n ResourcefulNumberTypeSchema\n)\n\n/**\n * Instance type for ResourcefulNumberType with validated properties.\n * Represents floating-point numbers as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Number Type}\n */\nexport interface ResourcefulNumberType extends ResourcefulNumberTypeOptions {\n type: 'number'\n}\n\n/**\n * Configuration options for ResourcefulIntegerType instances.\n * Defines validation rules and constraints for 32-bit integer fields in OpenAPI schemas.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport interface ResourcefulIntegerTypeOptions extends BaseInterface {\n /** Minimum value constraint for the integer */\n minimum: number\n /** Whether the minimum value is exclusive (value must be greater than minimum) */\n exclusiveMinimum: boolean\n /** Maximum value constraint for the integer */\n maximum: number\n /** Whether the maximum value is exclusive (value must be less than maximum) */\n exclusiveMaximum: boolean\n /** Value must be a multiple of this number */\n multipleOf: number\n}\n\n/**\n * Callable constructor for creating validated integer type instances.\n * Automatically sets the OpenAPI format to 'int32' for 32-bit signed integers.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport const ResourcefulIntegerType =\n generateResourcefulDataTypeClass<ResourcefulIntegerTypeOptions>(\n 'ResourcefulIntegerType',\n 'integer',\n ResourcefulIntegerTypeSchema,\n { format: 'int32' }\n )\n\n/**\n * Instance type for ResourcefulIntegerType with validated properties.\n * Represents 32-bit signed integers as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport interface ResourcefulIntegerType extends ResourcefulIntegerTypeOptions {\n type: 'integer'\n format: 'int32'\n}\n\n/**\n * Configuration options for ResourcefulBigintType instances.\n * Defines validation rules and constraints for 64-bit integer fields in OpenAPI schemas.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport interface ResourcefulBigintTypeOptions extends BaseInterface {\n /** Minimum value constraint for the 64-bit integer */\n minimum: bigint\n /** Whether the minimum value is exclusive (value must be greater than minimum) */\n exclusiveMinimum: boolean\n /** Maximum value constraint for the 64-bit integer */\n maximum: bigint\n /** Whether the maximum value is exclusive (value must be less than maximum) */\n exclusiveMaximum: boolean\n /** Value must be a multiple of this number */\n multipleOf: bigint\n}\n\n/**\n * Callable constructor for creating validated bigint type instances.\n * Automatically sets the OpenAPI format to 'int64' for 64-bit signed integers.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport const ResourcefulBigintType = generateResourcefulDataTypeClass<ResourcefulBigintTypeOptions>(\n 'ResourcefulBigintType',\n 'integer',\n ResourcefulBigintTypeSchema,\n { format: 'int64' }\n)\n\n/**\n * Instance type for ResourcefulBigintType with validated properties.\n * Represents 64-bit signed integers as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport interface ResourcefulBigintType extends ResourcefulBigintTypeOptions {\n type: 'integer'\n format: 'int64'\n}\n\n/**\n * Configuration options for ResourcefulUnsignedIntegerType instances.\n * Defines validation rules and constraints for unsigned integer fields in OpenAPI schemas.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport interface ResourcefulUnsignedIntegerTypeOptions extends BaseInterface {\n /** Minimum value constraint for the unsigned integer */\n minimum: number\n /** Whether the minimum value is exclusive (value must be greater than minimum) */\n exclusiveMinimum: boolean\n /** Maximum value constraint for the unsigned integer */\n maximum: number\n /** Whether the maximum value is exclusive (value must be less than maximum) */\n exclusiveMaximum: boolean\n /** Value must be a multiple of this number */\n multipleOf: number\n}\n\n/**\n * Callable constructor for creating validated unsigned integer type instances.\n * Represents unsigned integers without a specific OpenAPI format constraint.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport const ResourcefulUnsignedIntegerType =\n generateResourcefulDataTypeClass<ResourcefulUnsignedIntegerTypeOptions>(\n 'ResourcefulUnsignedIntegerType',\n 'integer',\n ResourcefulUnsignedIntegerTypeSchema\n )\n\n/**\n * Instance type for ResourcefulUnsignedIntegerType with validated properties.\n * Represents unsigned integers as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport interface ResourcefulUnsignedIntegerType extends ResourcefulUnsignedIntegerTypeOptions {\n type: 'integer'\n format: never\n}\n\n/**\n * Configuration options for ResourcefulBooleanType instances.\n * Currently has no specific configuration options as boolean types are straightforward.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#boolean | OpenAPI 3.0 Boolean Type}\n */\nexport interface ResourcefulBooleanTypeOptions extends BaseInterface {}\n\n/**\n * Callable constructor for creating validated boolean type instances.\n * Represents simple true/false values in OpenAPI schemas.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#boolean | OpenAPI 3.0 Boolean Type}\n */\nexport const ResourcefulBooleanType =\n generateResourcefulDataTypeClass<ResourcefulBooleanTypeOptions>(\n 'ResourcefulBooleanType',\n 'boolean',\n ResourcefulBooleanTypeSchema\n )\n\n/**\n * Instance type for ResourcefulBooleanType with validated properties.\n * Represents boolean true/false values as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#boolean | OpenAPI 3.0 Boolean Type}\n */\nexport interface ResourcefulBooleanType extends ResourcefulBooleanTypeOptions {\n type: 'boolean'\n}\n\n/**\n * Configuration options for ResourcefulObjectType instances.\n * Defines complex object schemas with typed properties and validation rules.\n * Supports advanced OpenAPI features like oneOf, allOf, anyOf, and not operators.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#object | OpenAPI 3.0 Object Type}\n */\nexport interface ResourcefulObjectTypeOptions extends BaseInterface {\n /** Object properties definition supporting direct data types and composition patterns */\n properties: {\n [key: string]:\n | ResourcefulDataType\n | { oneOf: Array<ResourcefulDataType> }\n | { allOf: Array<ResourcefulDataType> }\n | { anyOf: Array<ResourcefulDataType> }\n | { not: Array<ResourcefulDataType> }\n }\n /** Array of property names that are required for object validation */\n required?: string[]\n /** Whether additional properties beyond those defined are allowed, or direct data type for additional properties */\n additionalProperties?: boolean | ResourcefulDataType\n /** Minimum number of properties required in the object */\n minProperties?: number\n /** Maximum number of properties allowed in the object */\n maxProperties?: number\n}\n\n/**\n * Callable constructor for creating validated object type instances.\n * Supports complex nested object schemas with property validation and constraints.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#object | OpenAPI 3.0 Object Type}\n */\nexport const ResourcefulObjectType = generateResourcefulDataTypeClass<ResourcefulObjectTypeOptions>(\n 'ResourcefulObjectType',\n 'object',\n ResourcefulObjectTypeSchema\n)\n\n/**\n * Instance type for ResourcefulObjectType with validated properties.\n * Represents complex object schemas with typed properties as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#object | OpenAPI 3.0 Object Type}\n */\nexport interface ResourcefulObjectType extends ResourcefulObjectTypeOptions {\n type: 'object'\n}\n\n/**\n * Configuration options for ResourcefulArrayType instances.\n * Defines array schemas with typed items and validation constraints.\n * Supports complex item types including nested objects and arrays.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#array | OpenAPI 3.0 Array Type}\n */\nexport interface ResourcefulArrayTypeOptions extends BaseInterface {\n /** Type specification for array items, supporting all resourceful data types and composition patterns */\n items:\n | ResourcefulDataType\n | { oneOf: Array<ResourcefulDataType> }\n | { allOf: Array<ResourcefulDataType> }\n | { anyOf: Array<ResourcefulDataType> }\n | { not: Array<ResourcefulDataType> }\n /** Minimum number of items required in the array */\n minItems?: number\n /** Maximum number of items allowed in the array */\n maxItems?: number\n /** Whether all items in the array must be unique */\n uniqueItems?: boolean\n}\n\n/**\n * Callable constructor for creating validated array type instances.\n * Supports arrays with typed items and validation constraints like minimum/maximum length.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#array | OpenAPI 3.0 Array Type}\n */\nexport const ResourcefulArrayType = generateResourcefulDataTypeClass<ResourcefulArrayTypeOptions>(\n 'ResourcefulArrayType',\n 'array',\n ResourcefulArrayTypeSchema\n)\n\n/**\n * Instance type for ResourcefulArrayType with validated properties.\n * Represents arrays with typed items and validation constraints as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#array | OpenAPI 3.0 Array Type}\n */\nexport interface ResourcefulArrayType extends ResourcefulArrayTypeOptions {\n type: 'array'\n}\n\n/**\n * Union type representing all available resourceful data types.\n * Provides a comprehensive type for working with any resourceful data type instance.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/ | OpenAPI 3.0 Data Types}\n */\nexport type ResourcefulDataType =\n | ResourcefulStringType\n | ResourcefulDateType\n | ResourcefulDateTimeType\n | ResourcefulBinaryType\n | ResourcefulNumberType\n | ResourcefulIntegerType\n | ResourcefulBigintType\n | ResourcefulUnsignedIntegerType\n | ResourcefulBooleanType\n | ResourcefulObjectType\n | ResourcefulArrayType\n"],"names":["joi","E_INVALID_RESOURCEFUL_DATA_TYPE_OPTIONS"],"mappings":"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"}
1
+ {"version":3,"file":"definitions-DgI468dW.cjs","sources":["../src/private/data_type_schemas.ts","../src/private/data_types.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 /* v8 ignore start */\n } catch (error) {\n return helpers.error('any.invalid', { value })\n }\n /* v8 ignore stop */\n }, 'regex validation')\n .allow('')\n .optional(),\n format: joi.string().invalid('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 /* v8 ignore start */\n const properties = helpers.state.ancestors[0]?.properties || {}\n /* v8 ignore stop */\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 /* v8 ignore start */\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 /* v8 ignore stop */\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.link('#resourcefulDataType').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().invalid('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.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 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 /* v8 ignore start */\n const properties = helpers.state.ancestors[0]?.properties || {}\n /* v8 ignore stop */\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 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","/*\n|--------------------------------------------------------------------------\n| Column Data Types\n|--------------------------------------------------------------------------\n|\n| Classes which are used to define the data types of columns in\n| Lucid models that have been extended with the Resourceful mixin.\n|\n| Based on OpenAPI 3.0 Specifications found at:\n| https://swagger.io/docs/specification/v3_0/data-models/data-types/\n*/\n\nimport { E_INVALID_RESOURCEFUL_DATA_TYPE_OPTIONS } from '@nhtio/lucid-resourceful/errors'\nimport {\n ResourcefulStringTypeSchema,\n ResourcefulDateTypeSchema,\n ResourcefulDateTimeTypeSchema,\n ResourcefulBinaryTypeSchema,\n ResourcefulNumberTypeSchema,\n ResourcefulIntegerTypeSchema,\n ResourcefulBigintTypeSchema,\n ResourcefulUnsignedIntegerTypeSchema,\n ResourcefulBooleanTypeSchema,\n ResourcefulObjectTypeSchema,\n ResourcefulArrayTypeSchema,\n} from './data_type_schemas'\nimport type { ObjectSchema } from 'joi'\n\n/**\n * Base interface for all Resourceful data type options.\n * Includes common modifier properties that apply to all data types.\n */\nexport interface BaseInterface {\n /** Whether the value can be null */\n nullable?: boolean\n /** Whether the property is read-only (not included in create/update operations) */\n readOnly?: boolean\n /** Whether the property is write-only (not included in response serialization) */\n writeOnly?: boolean\n}\n\n/**\n * Base type constraint for abstract constructor functions used in data type generation.\n */\nexport type BaseClass = abstract new (...args: any[]) => any\n\n/**\n * A hybrid type that represents a constructor function which can be called both with and without the `new` keyword.\n * This type enables creating data type classes that work as both constructors and factory functions.\n *\n * @typeParam ClassConstructorOptions - The interface defining the constructor options for the class\n * @typeParam C - The abstract constructor type constraint\n */\nexport type CallableNewable<\n ClassConstructorOptions extends BaseInterface,\n C extends BaseClass = BaseClass,\n> = {\n readonly schema: ObjectSchema<ClassConstructorOptions>\n new (...args: ConstructorParameters<C>): InstanceType<C>\n} & { (...args: ConstructorParameters<C>): InstanceType<C> } & { prototype: InstanceType<C> }\n\nconst generateResourcefulDataTypeClass = <\n ClassConstructorOptions extends BaseInterface,\n C extends BaseClass = BaseClass,\n>(\n name: string,\n type: string,\n resolver: () => ObjectSchema<ClassConstructorOptions>,\n staticDefinitions: { [key: string]: any } = {}\n): CallableNewable<ClassConstructorOptions, C> => {\n const schema = resolver()\n const Base = class {\n declare static readonly schema: ObjectSchema<ClassConstructorOptions>\n constructor(options: Partial<ClassConstructorOptions> = {}) {\n const { error, value } = schema.validate(options, {\n abortEarly: false,\n convert: true,\n allowUnknown: false,\n })\n if (error) {\n throw new E_INVALID_RESOURCEFUL_DATA_TYPE_OPTIONS(name, error)\n }\n Object.defineProperty(this, 'type', {\n value: type,\n writable: false,\n enumerable: true,\n configurable: false,\n })\n Object.entries(value).forEach(([key, val]) => {\n Object.defineProperty(this, key, {\n value: val,\n writable: false,\n enumerable: true,\n configurable: false,\n })\n })\n Object.entries(staticDefinitions).forEach(([key, val]) => {\n Object.defineProperty(this, key, {\n value: val,\n writable: false,\n enumerable: true,\n configurable: false,\n })\n })\n }\n\n get [Symbol.toStringTag]() {\n return JSON.stringify(this)\n }\n\n toString(): string {\n return JSON.stringify(this)\n }\n\n // toObject(): { [key: string]: any } {\n // const ret: { [key: string]: any } = {\n // type,\n // }\n // for (const key of Object.getOwnPropertyNames(this)) {\n // if (key !== 'constructor' && key !== 'toString' && key !== 'toObject') {\n // ret[key] = (this as any)[key]\n // }\n // }\n // Object.entries(staticDefinitions).forEach(([key, val]) => {\n // ret[key] = val\n // })\n // return ret\n // }\n } as unknown as C\n Object.defineProperty(Base, 'name', {\n value: name,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n Object.defineProperty(Base, 'schema', {\n value: schema,\n writable: false,\n enumerable: false,\n configurable: false,\n })\n const Fn: any = function (this: any, ...args: any[]) {\n if (!new.target) {\n return new (Fn as any)(...args)\n }\n return new (Base as any)(...args)\n }\n Fn.prototype = Object.create(Base.prototype)\n Fn.prototype.constructor = Fn\n for (const key of Object.getOwnPropertyNames(Base)) {\n if (key !== 'prototype' && key !== 'name' && key !== 'length') {\n Object.defineProperty(Fn, key, Object.getOwnPropertyDescriptor(Base, key)!)\n }\n }\n return Fn as CallableNewable<ClassConstructorOptions, C>\n}\n\n/**\n * Supported string formats for ResourcefulStringType, excluding OpenAPI reserved formats.\n * These formats provide additional validation and documentation for string fields.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport const ResourcefulStringFormat = ['password', 'byte'] as const\n\n/**\n * Union type of supported string formats for ResourcefulStringType.\n * Used to provide type safety when specifying string field formats.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport type ResourcefulStringFormat = (typeof ResourcefulStringFormat)[number]\n\n/**\n * Configuration options for ResourcefulStringType instances.\n * Defines validation rules and constraints for string-based fields in OpenAPI schemas.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulStringTypeOptions extends BaseInterface {\n /** Minimum length constraint for the string value */\n minLength: number\n /** Maximum length constraint for the string value */\n maxLength: number\n /** Regular expression pattern that the string value must match */\n pattern?: string\n /** String format specification, excluding OpenAPI reserved formats like date, date-time, and binary */\n format?:\n | ResourcefulStringFormat\n | Exclude<string, 'date' | 'date-time' | 'password' | 'byte' | 'binary'>\n /** Array of allowed string values for enumeration validation */\n enum?: string[]\n}\n\n/**\n * Callable constructor for creating validated string type instances.\n * Supports both constructor and function call patterns for flexible usage.\n *\n * @example\n * ```typescript\n * const stringType = new ResourcefulStringType({ minLength: 1, maxLength: 100 })\n * const stringType2 = ResourcefulStringType({ pattern: '^[a-zA-Z]+$' })\n * ```\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport const ResourcefulStringType = generateResourcefulDataTypeClass<ResourcefulStringTypeOptions>(\n 'ResourcefulStringType',\n 'string',\n ResourcefulStringTypeSchema\n)\n\n/**\n * Instance type for ResourcefulStringType with validated properties.\n * Represents a string data type with validation constraints as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulStringType extends ResourcefulStringTypeOptions {\n type: 'string'\n}\n\n/**\n * Configuration options for ResourcefulDateType instances.\n * Represents date-only values formatted as ISO 8601 date strings.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulDateTypeOptions extends BaseInterface {}\n\n/**\n * Callable constructor for creating validated date type instances.\n * Automatically sets the OpenAPI format to 'date' for ISO 8601 date strings.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport const ResourcefulDateType = generateResourcefulDataTypeClass<ResourcefulDateTypeOptions>(\n 'ResourcefulDateType',\n 'string',\n ResourcefulDateTypeSchema,\n { format: 'date' }\n)\n\n/**\n * Instance type for ResourcefulDateType with validated properties.\n * Represents a date-only value formatted as ISO 8601 date string as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulDateType extends ResourcefulDateTypeOptions {\n type: 'string'\n format: 'date'\n}\n\n/**\n * Configuration options for ResourcefulDateTimeType instances.\n * Represents date-time values formatted as ISO 8601 date-time strings.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulDateTimeTypeOptions extends BaseInterface {}\n\n/**\n * Callable constructor for creating validated date-time type instances.\n * Automatically sets the OpenAPI format to 'date-time' for ISO 8601 date-time strings.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport const ResourcefulDateTimeType =\n generateResourcefulDataTypeClass<ResourcefulDateTimeTypeOptions>(\n 'ResourcefulDateTimeType',\n 'string',\n ResourcefulDateTimeTypeSchema,\n { format: 'date-time' }\n )\n\n/**\n * Instance type for ResourcefulDateTimeType with validated properties.\n * Represents a date-time value formatted as ISO 8601 date-time string as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulDateTimeType extends ResourcefulDateTimeTypeOptions {\n type: 'string'\n format: 'date-time'\n}\n\n/**\n * Configuration options for ResourcefulBinaryType instances.\n * Defines constraints for binary data represented as base64-encoded strings.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulBinaryTypeOptions extends BaseInterface {\n /** Minimum length constraint for the base64-encoded binary data */\n minLength: number\n /** Maximum length constraint for the base64-encoded binary data */\n maxLength: number\n}\n\n/**\n * Callable constructor for creating validated binary type instances.\n * Automatically sets the OpenAPI format to 'binary' for base64-encoded binary data.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport const ResourcefulBinaryType = generateResourcefulDataTypeClass<ResourcefulBinaryTypeOptions>(\n 'ResourcefulBinaryType',\n 'string',\n ResourcefulBinaryTypeSchema,\n { format: 'binary' }\n)\n\n/**\n * Instance type for ResourcefulBinaryType with validated properties.\n * Represents binary data as base64-encoded string as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#string | OpenAPI 3.0 String Type}\n */\nexport interface ResourcefulBinaryType extends ResourcefulBinaryTypeOptions {\n type: 'string'\n format: 'binary'\n}\n\n/**\n * Supported number formats for ResourcefulNumberType, following OpenAPI 3.0 specification.\n * These formats provide additional precision and validation for numeric fields.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Number Type}\n */\nexport const ResourcefulNumberFormat = ['float', 'double'] as const\n\n/**\n * Union type of supported number formats for ResourcefulNumberType.\n * Used to provide type safety when specifying numeric field formats.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Number Type}\n */\nexport type ResourcefulNumberFormat = (typeof ResourcefulNumberFormat)[number]\n\n/**\n * Configuration options for ResourcefulNumberType instances.\n * Defines validation rules and constraints for numeric fields in OpenAPI schemas.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Number Type}\n */\nexport interface ResourcefulNumberTypeOptions extends BaseInterface {\n /** Minimum value constraint for the number */\n minimum: number\n /** Whether the minimum value is exclusive (value must be greater than minimum) */\n exclusiveMinimum: boolean\n /** Maximum value constraint for the number */\n maximum: number\n /** Whether the maximum value is exclusive (value must be less than maximum) */\n exclusiveMaximum: boolean\n /** Number format specification for precision (float or double) */\n format: ResourcefulNumberFormat\n /** Value must be a multiple of this number */\n multipleOf: number\n}\n\n/**\n * Callable constructor for creating validated number type instances.\n * Supports floating-point numbers with configurable precision and range constraints.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Number Type}\n */\nexport const ResourcefulNumberType = generateResourcefulDataTypeClass<ResourcefulNumberTypeOptions>(\n 'ResourcefulNumberType',\n 'number',\n ResourcefulNumberTypeSchema\n)\n\n/**\n * Instance type for ResourcefulNumberType with validated properties.\n * Represents floating-point numbers as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Number Type}\n */\nexport interface ResourcefulNumberType extends ResourcefulNumberTypeOptions {\n type: 'number'\n}\n\n/**\n * Configuration options for ResourcefulIntegerType instances.\n * Defines validation rules and constraints for 32-bit integer fields in OpenAPI schemas.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport interface ResourcefulIntegerTypeOptions extends BaseInterface {\n /** Minimum value constraint for the integer */\n minimum: number\n /** Whether the minimum value is exclusive (value must be greater than minimum) */\n exclusiveMinimum: boolean\n /** Maximum value constraint for the integer */\n maximum: number\n /** Whether the maximum value is exclusive (value must be less than maximum) */\n exclusiveMaximum: boolean\n /** Value must be a multiple of this number */\n multipleOf: number\n}\n\n/**\n * Callable constructor for creating validated integer type instances.\n * Automatically sets the OpenAPI format to 'int32' for 32-bit signed integers.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport const ResourcefulIntegerType =\n generateResourcefulDataTypeClass<ResourcefulIntegerTypeOptions>(\n 'ResourcefulIntegerType',\n 'integer',\n ResourcefulIntegerTypeSchema,\n { format: 'int32' }\n )\n\n/**\n * Instance type for ResourcefulIntegerType with validated properties.\n * Represents 32-bit signed integers as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport interface ResourcefulIntegerType extends ResourcefulIntegerTypeOptions {\n type: 'integer'\n format: 'int32'\n}\n\n/**\n * Configuration options for ResourcefulBigintType instances.\n * Defines validation rules and constraints for 64-bit integer fields in OpenAPI schemas.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport interface ResourcefulBigintTypeOptions extends BaseInterface {\n /** Minimum value constraint for the 64-bit integer */\n minimum: bigint\n /** Whether the minimum value is exclusive (value must be greater than minimum) */\n exclusiveMinimum: boolean\n /** Maximum value constraint for the 64-bit integer */\n maximum: bigint\n /** Whether the maximum value is exclusive (value must be less than maximum) */\n exclusiveMaximum: boolean\n /** Value must be a multiple of this number */\n multipleOf: bigint\n}\n\n/**\n * Callable constructor for creating validated bigint type instances.\n * Automatically sets the OpenAPI format to 'int64' for 64-bit signed integers.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport const ResourcefulBigintType = generateResourcefulDataTypeClass<ResourcefulBigintTypeOptions>(\n 'ResourcefulBigintType',\n 'integer',\n ResourcefulBigintTypeSchema,\n { format: 'int64' }\n)\n\n/**\n * Instance type for ResourcefulBigintType with validated properties.\n * Represents 64-bit signed integers as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport interface ResourcefulBigintType extends ResourcefulBigintTypeOptions {\n type: 'integer'\n format: 'int64'\n}\n\n/**\n * Configuration options for ResourcefulUnsignedIntegerType instances.\n * Defines validation rules and constraints for unsigned integer fields in OpenAPI schemas.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport interface ResourcefulUnsignedIntegerTypeOptions extends BaseInterface {\n /** Minimum value constraint for the unsigned integer */\n minimum: number\n /** Whether the minimum value is exclusive (value must be greater than minimum) */\n exclusiveMinimum: boolean\n /** Maximum value constraint for the unsigned integer */\n maximum: number\n /** Whether the maximum value is exclusive (value must be less than maximum) */\n exclusiveMaximum: boolean\n /** Value must be a multiple of this number */\n multipleOf: number\n}\n\n/**\n * Callable constructor for creating validated unsigned integer type instances.\n * Represents unsigned integers without a specific OpenAPI format constraint.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport const ResourcefulUnsignedIntegerType =\n generateResourcefulDataTypeClass<ResourcefulUnsignedIntegerTypeOptions>(\n 'ResourcefulUnsignedIntegerType',\n 'integer',\n ResourcefulUnsignedIntegerTypeSchema\n )\n\n/**\n * Instance type for ResourcefulUnsignedIntegerType with validated properties.\n * Represents unsigned integers as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#numbers | OpenAPI 3.0 Integer Type}\n */\nexport interface ResourcefulUnsignedIntegerType extends ResourcefulUnsignedIntegerTypeOptions {\n type: 'integer'\n format: never\n}\n\n/**\n * Configuration options for ResourcefulBooleanType instances.\n * Currently has no specific configuration options as boolean types are straightforward.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#boolean | OpenAPI 3.0 Boolean Type}\n */\nexport interface ResourcefulBooleanTypeOptions extends BaseInterface {}\n\n/**\n * Callable constructor for creating validated boolean type instances.\n * Represents simple true/false values in OpenAPI schemas.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#boolean | OpenAPI 3.0 Boolean Type}\n */\nexport const ResourcefulBooleanType =\n generateResourcefulDataTypeClass<ResourcefulBooleanTypeOptions>(\n 'ResourcefulBooleanType',\n 'boolean',\n ResourcefulBooleanTypeSchema\n )\n\n/**\n * Instance type for ResourcefulBooleanType with validated properties.\n * Represents boolean true/false values as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#boolean | OpenAPI 3.0 Boolean Type}\n */\nexport interface ResourcefulBooleanType extends ResourcefulBooleanTypeOptions {\n type: 'boolean'\n}\n\n/**\n * Configuration options for ResourcefulObjectType instances.\n * Defines complex object schemas with typed properties and validation rules.\n * Supports advanced OpenAPI features like oneOf, allOf, anyOf, and not operators.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#object | OpenAPI 3.0 Object Type}\n */\nexport interface ResourcefulObjectTypeOptions extends BaseInterface {\n /** Object properties definition supporting direct data types and composition patterns */\n properties: {\n [key: string]:\n | ResourcefulDataType\n | { oneOf: Array<ResourcefulDataType> }\n | { allOf: Array<ResourcefulDataType> }\n | { anyOf: Array<ResourcefulDataType> }\n | { not: Array<ResourcefulDataType> }\n }\n /** Array of property names that are required for object validation */\n required?: string[]\n /** Whether additional properties beyond those defined are allowed, or direct data type for additional properties */\n additionalProperties?: boolean | ResourcefulDataType\n /** Minimum number of properties required in the object */\n minProperties?: number\n /** Maximum number of properties allowed in the object */\n maxProperties?: number\n}\n\n/**\n * Callable constructor for creating validated object type instances.\n * Supports complex nested object schemas with property validation and constraints.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#object | OpenAPI 3.0 Object Type}\n */\nexport const ResourcefulObjectType = generateResourcefulDataTypeClass<ResourcefulObjectTypeOptions>(\n 'ResourcefulObjectType',\n 'object',\n ResourcefulObjectTypeSchema\n)\n\n/**\n * Instance type for ResourcefulObjectType with validated properties.\n * Represents complex object schemas with typed properties as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#object | OpenAPI 3.0 Object Type}\n */\nexport interface ResourcefulObjectType extends ResourcefulObjectTypeOptions {\n type: 'object'\n}\n\n/**\n * Configuration options for ResourcefulArrayType instances.\n * Defines array schemas with typed items and validation constraints.\n * Supports complex item types including nested objects and arrays.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#array | OpenAPI 3.0 Array Type}\n */\nexport interface ResourcefulArrayTypeOptions extends BaseInterface {\n /** Type specification for array items, supporting all resourceful data types and composition patterns */\n items:\n | ResourcefulDataType\n | { oneOf: Array<ResourcefulDataType> }\n | { allOf: Array<ResourcefulDataType> }\n | { anyOf: Array<ResourcefulDataType> }\n | { not: Array<ResourcefulDataType> }\n /** Minimum number of items required in the array */\n minItems?: number\n /** Maximum number of items allowed in the array */\n maxItems?: number\n /** Whether all items in the array must be unique */\n uniqueItems?: boolean\n}\n\n/**\n * Callable constructor for creating validated array type instances.\n * Supports arrays with typed items and validation constraints like minimum/maximum length.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#array | OpenAPI 3.0 Array Type}\n */\nexport const ResourcefulArrayType = generateResourcefulDataTypeClass<ResourcefulArrayTypeOptions>(\n 'ResourcefulArrayType',\n 'array',\n ResourcefulArrayTypeSchema\n)\n\n/**\n * Instance type for ResourcefulArrayType with validated properties.\n * Represents arrays with typed items and validation constraints as defined in the OpenAPI 3.0 specification.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/#array | OpenAPI 3.0 Array Type}\n */\nexport interface ResourcefulArrayType extends ResourcefulArrayTypeOptions {\n type: 'array'\n}\n\n/**\n * Union type representing all available resourceful data types.\n * Provides a comprehensive type for working with any resourceful data type instance.\n *\n * @see {@link https://swagger.io/docs/specification/v3_0/data-models/data-types/ | OpenAPI 3.0 Data Types}\n */\nexport type ResourcefulDataType =\n | ResourcefulStringType\n | ResourcefulDateType\n | ResourcefulDateTimeType\n | ResourcefulBinaryType\n | ResourcefulNumberType\n | ResourcefulIntegerType\n | ResourcefulBigintType\n | ResourcefulUnsignedIntegerType\n | ResourcefulBooleanType\n | ResourcefulObjectType\n | ResourcefulArrayType\n"],"names":["joi","E_INVALID_RESOURCEFUL_DATA_TYPE_OPTIONS"],"mappings":"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"}
package/definitions.cjs CHANGED
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const definitions = require("./definitions-BrN-oCRI.cjs");
3
+ const definitions = require("./definitions-DgI468dW.cjs");
4
4
  exports.ResourcefulArrayType = definitions.ResourcefulArrayType;
5
5
  exports.ResourcefulBigintType = definitions.ResourcefulBigintType;
6
6
  exports.ResourcefulBinaryType = definitions.ResourcefulBinaryType;
package/definitions.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { R, d, g, b, h, i, e, f, a, j, c } from "./definitions-B66EPk0H.js";
1
+ import { R, d, g, b, h, i, e, f, a, j, c } from "./definitions-B88XBTUF.js";
2
2
  export {
3
3
  R as ResourcefulArrayType,
4
4
  d as ResourcefulBigintType,