{"version":3,"sources":["../src/types.ts"],"names":["z"],"mappings":";;;;;AAWa,IAAA,eAAA,GAAkBA,MAAE,IAAK,CAAA;AAAA,EACpC,QAAA;AAAA,EACA,QAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,IAAA;AAAA,EACA;AACF,CAAC","file":"index.cjs","sourcesContent":["import { z } from 'zod';\n\nexport type FieldType =\n  | 'String'\n  | 'Number'\n  | 'Boolean'\n  | 'Date'\n  | 'JSON'\n  | 'ID'\n  | 'Relation';\n\nexport const fieldTypeSchema = z.enum([\n  'String',\n  'Number',\n  'Boolean',\n  'Date',\n  'JSON',\n  'ID',\n  'Relation',\n]);\n\nexport interface BaseFieldDefinition {\n  type: FieldType;\n  required?: boolean;\n  unique?: boolean;\n  default?: any;\n  isArray?: boolean;\n  validators?: Array<(value: any) => string | null>;\n  description?: string;\n}\n\nexport interface StringFieldDefinition extends BaseFieldDefinition {\n  type: 'String';\n  enum?: string[];\n  minLength?: number;\n  maxLength?: number;\n  pattern?: string;\n  format?: 'email' | 'uri' | 'uuid' | 'date-time' | 'date' | 'time' | string;\n}\n\nexport interface NumberFieldDefinition extends BaseFieldDefinition {\n  type: 'Number';\n  minimum?: number;\n  maximum?: number;\n  exclusiveMinimum?: boolean;\n  exclusiveMaximum?: boolean;\n  multipleOf?: number;\n}\n\nexport interface BooleanFieldDefinition extends BaseFieldDefinition {\n  type: 'Boolean';\n}\n\nexport interface DateFieldDefinition extends BaseFieldDefinition {\n  type: 'Date';\n}\n\nexport interface JsonFieldDefinition extends BaseFieldDefinition {\n  type: 'JSON';\n}\n\nexport interface IDFieldDefinition extends BaseFieldDefinition {\n  type: 'ID';\n  autoIncrement?: boolean;\n  autoGenerate?: boolean;\n}\n\nexport interface RelationFieldDefinition extends BaseFieldDefinition {\n  type: 'Relation';\n  relation: {\n    model: string;\n    type: 'hasOne' | 'hasMany' | 'belongsTo' | 'manyToMany';\n    foreignKey?: string;\n    through?: string;\n  };\n}\n\nexport type FieldDefinition =\n  | StringFieldDefinition\n  | NumberFieldDefinition\n  | BooleanFieldDefinition\n  | DateFieldDefinition\n  | JsonFieldDefinition\n  | IDFieldDefinition\n  | RelationFieldDefinition;\n\nexport interface ModelDefinition {\n  fields: Record<string, FieldDefinition>;\n  timestamps?: boolean;\n  softDelete?: boolean;\n  tableName?: string;\n  indexes?: Array<{\n    fields: string | string[];\n    unique?: boolean;\n    name?: string;\n  }>;\n}\n\nexport interface Schema {\n  models: Record<string, ModelDefinition>;\n  enums?: Record<string, string[]>;\n  config?: {\n    database?: {\n      provider?: 'postgresql' | 'mysql' | 'sqlite' | 'mongodb';\n      url?: string;\n      ssl?: boolean;\n    };\n    auth?: {\n      enabled?: boolean;\n      providers?: ('credentials' | 'github' | 'google')[];\n    };\n  };\n}\n"]}