{"version":3,"sources":["../src/schemas/defineSchema.ts","../src/schemas/fields/field-types/object.ts","../src/schemas/defineSubDocument.ts","../src/schemas/fields/field-types/string.ts","../src/schemas/fields/field-types/number.ts","../src/schemas/fields/field-types/boolean.ts","../src/schemas/fields/field-types/objectId.ts","../src/schemas/fields/field-types/date.ts","../src/schemas/fields/index.ts"],"sourcesContent":["import { MonkoField } from \"./types\";\n\n/**\n * Defines the structure for a Monko schema configuration.\n * This is the input type for the `defineSchema` function.\n */\nexport interface SchemaDefinition {\n  /** The name of the model/schema (e.g., 'User'). */\n  name: string;\n  /** The name of the database this schema belongs to. */\n  db: string;\n  /** The name of the collection in the database. */\n  collection: string;\n  /** An object defining the fields of the schema. Keys are field names. */\n  fields: Record<string, MonkoField>;\n  /** Optional settings for schema. */\n  // options?: {\n  //   /** Automatically add and manage createdAt and updatedAt timestamps */\n  //   timestamps?: boolean;\n  // };\n  \n\n  // TODO: Add more properties here\n}\n\n\n/**\n * Defines a Monko schema.\n * This function will take a schema definition, validate it,\n * and return a processed schema object that can be used by the ORM.\n *\n * @param definition The schema definition object.\n * @returns A processed Monko schema.\n */\nexport function defineSchema<const T extends SchemaDefinition>(schema: T): T {\n  return schema;\n}","import { BaseField, ObjectField, MonkoField } from '../../types';\n\nexport function createObjectField<T extends Record<string, MonkoField>>(\n  schema: T,\n  opts?: BaseField\n): ObjectField<T> {\n  return { ...opts, type: 'object', schema };\n}\n","import { createObjectField } from './fields/field-types/object';\nimport type { BaseField, MonkoField, ObjectField } from './types';\n\n/**\n * Defines an embedded sub-document schema for reuse in other schemas.\n * Returns a function that, given optional field settings, produces an ObjectField<T>.\n */\nexport function defineSubDocument<const T extends Record<string, MonkoField>>(\n  schema: T\n): (opts?: BaseField) => ObjectField<T> {\n  return (opts) => createObjectField(schema, opts);\n} ","import { BaseField } from \"../../types\";\n\n\nexport interface StringFieldProps extends BaseField {\n    default?: string;\n    minLength?: number;\n    maxLength?: number;\n    pattern?: string;\n    enum?: string[];\n}\n\nexport interface StringField extends StringFieldProps {\n    type: \"string\";\n}\n\nexport const createStringField = (props: StringFieldProps): StringField => {\n    return {\n        ...props,\n        type: 'string',\n    }\n}","import { BaseField } from \"../../types\";\n\nexport interface NumberFieldProps extends BaseField {\n    default?: number;\n    min?: number;\n    max?: number;\n}\n\n\nexport interface NumberField extends NumberFieldProps {\n    type: \"number\";\n}\n\nexport const createNumberField = (props: NumberFieldProps): NumberField => { \n    return {\n        ...props,\n        type: 'number',\n    }\n}","import { BaseField } from \"../../types\";\n\n\nexport interface BooleanFieldProps extends BaseField {\n    default?: boolean;\n}\n\nexport interface BooleanField extends BooleanFieldProps {\n    type: 'boolean';\n}\n\nexport const createBooleanField = (props: BooleanFieldProps): BooleanField => {\n    return {\n        ...props,\n        type: 'boolean',\n    }\n}","import { BaseField } from \"../../types\";\nimport { toObjectId } from \"../../../utils\";\n\nexport interface ObjectIdFieldProps extends BaseField {\n    default?: string;\n    ref?: string; // The name of the model to reference\n}\n\nexport interface ObjectIdField extends ObjectIdFieldProps {\n    type: \"objectId\";\n}\n\nexport const createObjectIdField = (props: ObjectIdFieldProps): ObjectIdField => {\n    return {\n        ...props,\n        type: 'objectId',\n        transform: toObjectId, // Automatically convert valid strings to ObjectIds\n    }\n}","import { BaseField } from \"../../types\";\n\nexport interface DateFieldProps extends BaseField {\n    default?: Date;\n}\n\nexport interface DateField extends DateFieldProps {\n    type: \"date\";\n}\n\nexport const createDateField = (props: DateFieldProps): DateField => {\n    return {\n        ...props,\n        type: 'date',\n    }\n}","import { createStringField } from \"./field-types/string\";\nimport { createNumberField } from \"./field-types/number\";\nimport { createBooleanField } from \"./field-types/boolean\";\nimport { createObjectIdField } from \"./field-types/objectId\";\nimport { createDateField } from \"./field-types/date\";\nimport { createObjectField } from \"./field-types/object\";\n\n\nexport const fields = {\n    string: createStringField,\n    number: createNumberField,\n    boolean: createBooleanField,\n    date: createDateField,\n    objectId: createObjectIdField,\n    object: createObjectField,\n}\n"],"mappings":";;;;;AAkCO,SAAS,aAA+C,QAAc;AAC3E,SAAO;AACT;;;AClCO,SAAS,kBACd,QACA,MACgB;AAChB,SAAO,EAAE,GAAG,MAAM,MAAM,UAAU,OAAO;AAC3C;;;ACAO,SAAS,kBACd,QACsC;AACtC,SAAO,CAAC,SAAS,kBAAkB,QAAQ,IAAI;AACjD;;;ACIO,IAAM,oBAAoB,CAAC,UAAyC;AACvE,SAAO;AAAA,IACH,GAAG;AAAA,IACH,MAAM;AAAA,EACV;AACJ;;;ACPO,IAAM,oBAAoB,CAAC,UAAyC;AACvE,SAAO;AAAA,IACH,GAAG;AAAA,IACH,MAAM;AAAA,EACV;AACJ;;;ACPO,IAAM,qBAAqB,CAAC,UAA2C;AAC1E,SAAO;AAAA,IACH,GAAG;AAAA,IACH,MAAM;AAAA,EACV;AACJ;;;ACJO,IAAM,sBAAsB,CAAC,UAA6C;AAC7E,SAAO;AAAA,IACH,GAAG;AAAA,IACH,MAAM;AAAA,IACN,WAAW;AAAA;AAAA,EACf;AACJ;;;ACRO,IAAM,kBAAkB,CAAC,UAAqC;AACjE,SAAO;AAAA,IACH,GAAG;AAAA,IACH,MAAM;AAAA,EACV;AACJ;;;ACPO,IAAM,SAAS;AAAA,EAClB,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,MAAM;AAAA,EACN,UAAU;AAAA,EACV,QAAQ;AACZ;","names":[]}