{"version":3,"file":"data_type_schemas-D5ANXXBt.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  ResourcefulEnumObject,\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\n          .array()\n          .items(\n            joi.alternatives(\n              joi.string(),\n              joi.object<ResourcefulEnumObject<string>>({\n                value: joi.string().required(),\n                title: joi.string().optional().allow('', null),\n                i18n: joi.boolean().default(false),\n              })\n            )\n          )\n          .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        autoCreate: joi.boolean().default(false),\n        autoUpdate: joi.boolean().default(false),\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        autoCreate: joi.boolean().default(false),\n        autoUpdate: joi.boolean().default(false),\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\n      .array()\n      .items(\n        joi.alternatives(\n          joi.string(),\n          joi.object<ResourcefulEnumObject<string>>({\n            value: joi.string().required(),\n            title: joi.string().optional().allow('', null),\n            i18n: joi.boolean().default(false),\n          })\n        )\n      )\n      .optional(),\n    ...CommonModifiersSchema,\n  })\n\nexport const ResourcefulDateTypeSchema = () =>\n  joi.object<ResourcefulDateTypeOptions>({\n    ...CommonModifiersSchema,\n    autoCreate: joi.boolean().default(false),\n    autoUpdate: joi.boolean().default(false),\n  })\n\nexport const ResourcefulDateTimeTypeSchema = () =>\n  joi.object<ResourcefulDateTimeTypeOptions>({\n    ...CommonModifiersSchema,\n    autoCreate: joi.boolean().default(false),\n    autoUpdate: joi.boolean().default(false),\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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"}