{"version":3,"sources":["../src/schema.ts"],"sourcesContent":["/**\n * Farm's declarative data schema: a serializable description of models and\n * fields shared by integrations, applications, ORM generation, and any feature\n * that needs one schema story across storage targets.\n *\n * The shape is plain data, not code, so it can be inspected at build time,\n * mapped onto an ORM schema, and serialized to other tooling.\n */\n\nexport type FarmSchemaFieldType =\n  | \"id\"\n  | \"uuid\"\n  | \"string\"\n  | \"text\"\n  | \"boolean\"\n  | \"integer\"\n  | \"number\"\n  | \"datetime\"\n  | \"json\"\n  | \"enum\";\n\nexport interface FarmSchemaReference {\n  model: string;\n  field: string;\n  relation?: \"belongsTo\" | \"hasOne\" | \"hasMany\";\n  onDelete?: \"cascade\" | \"restrict\" | \"setNull\" | \"noAction\";\n  enforced?: \"db\" | \"app\" | \"none\";\n}\n\nexport interface FarmSchemaField {\n  type: FarmSchemaFieldType;\n  name?: string;\n  description?: string;\n  required?: boolean;\n  nullable?: boolean;\n  primaryKey?: boolean;\n  unique?: boolean;\n  index?: boolean;\n  list?: boolean;\n  default?: unknown;\n  values?: readonly string[];\n  reference?: FarmSchemaReference;\n  meta?: Record<string, unknown>;\n}\n\nexport interface FarmSchemaConstraint {\n  type: \"unique\" | \"index\";\n  fields: readonly string[];\n  name?: string;\n  meta?: Record<string, unknown>;\n}\n\nexport interface FarmSchemaModel {\n  name?: string;\n  description?: string;\n  fields: Record<string, FarmSchemaField>;\n  constraints?: readonly FarmSchemaConstraint[];\n  meta?: Record<string, unknown>;\n}\n\nexport interface FarmSchemaModelExtension {\n  name?: string;\n  description?: string;\n  fields?: Record<string, FarmSchemaField>;\n  constraints?: readonly FarmSchemaConstraint[];\n  meta?: Record<string, unknown>;\n}\n\nexport interface FarmSchemaModelOverride {\n  name?: string;\n  description?: string;\n  fields?: Record<string, Partial<FarmSchemaField>>;\n  constraints?: readonly FarmSchemaConstraint[];\n  meta?: Record<string, unknown>;\n}\n\nexport interface FarmSchema {\n  models: Record<string, FarmSchemaModel>;\n  meta?: Record<string, unknown>;\n  extend?: Record<string, FarmSchemaModelExtension>;\n  override?: Record<string, FarmSchemaModelOverride>;\n}\n\n/**\n * Declare a data schema with full type inference preserved.\n *\n * ```ts\n * export const schema = defineSchema({\n *   models: {\n *     tasks: {\n *       fields: {\n *         id: { type: \"uuid\", primaryKey: true },\n *         title: { type: \"string\", required: true },\n *       },\n *     },\n *   },\n * });\n * ```\n */\nexport function defineSchema<TSchema extends FarmSchema>(schema: TSchema): TSchema {\n  return schema;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAmGO,SAAS,aAAyC,QAA0B;AACjF,SAAO;AACT;AAFgB;","names":[]}