{"version":3,"file":"index.mjs","names":[],"sources":["../src/zod.ts"],"sourcesContent":["import {\n  Column,\n  ArrayColumn,\n  BigIntColumn,\n  BigSerialColumn,\n  CitextColumn,\n  DateColumn,\n  DecimalColumn,\n  DoublePrecisionColumn,\n  EnumColumn,\n  IntegerColumn,\n  JSONColumn,\n  JSONTextColumn,\n  MoneyColumn,\n  RealColumn,\n  SerialColumn,\n  SmallIntColumn,\n  SmallSerialColumn,\n  StringColumn,\n  TextColumn,\n  TimestampColumn,\n  TimestampTZColumn,\n  VarCharColumn,\n  ArrayColumnValue,\n  ColumnSchemaGetterColumns,\n  ColumnSchemaGetterTableClass,\n  makeColumnNullable,\n  RecordUnknown,\n  setColumnData,\n  setColumnEncode,\n  setColumnParse,\n  setColumnParseNull,\n  setDataValue,\n  StringData,\n  ColumnSchemaConfig,\n  AdapterSchemaConfigOptions,\n  getDateAsNumberFn,\n  getDateAsDateFn,\n} from 'pqb/internal';\nimport {\n  z,\n  ZodArray,\n  ZodBoolean,\n  ZodDate,\n  ZodEnum,\n  ZodNever,\n  ZodNullable,\n  ZodNumber,\n  ZodObject,\n  ZodOptional,\n  ZodRawShape,\n  ZodString,\n  ZodType,\n  ZodTypeAny,\n  ZodUnion,\n  ZodUnknown,\n  optional,\n  core,\n} from 'zod/v4';\nimport { $ZodErrorMap, $ZodType } from 'zod/v4/core';\n\ninterface ZodShape {\n  [K: string]: $ZodType;\n}\n\nclass ZodJSONColumn<ZodSchema extends ZodTypeAny> extends JSONColumn<\n  ZodSchema['_output'],\n  ZodSchemaConfig,\n  ZodSchema\n> {\n  constructor(\n    schemaConfig: ZodSchemaConfig,\n    schema: ZodSchema,\n    encodedByDriver?: boolean,\n  ) {\n    super(schemaConfig, schema, encodedByDriver);\n  }\n}\n\nclass ZodJSONTextColumn<ZodSchema extends ZodTypeAny> extends JSONTextColumn<\n  ZodSchema['_output'],\n  ZodSchemaConfig,\n  ZodSchema\n> {\n  constructor(schemaConfig: ZodSchemaConfig, schema: ZodSchema) {\n    super(schemaConfig, schema);\n  }\n}\n\nfunction applyMethod<T, Key extends string>(\n  column: T,\n  key: Key,\n  value: unknown,\n  params?: Column.Error.StringOrMessage,\n) {\n  const cloned = setDataValue(\n    column as Column.Pick.Data,\n    key,\n    value,\n    params,\n  ) as Column;\n\n  // Prevent zod from mutating `value` and `params`. It overwrites `message` to `error`.\n  const p = typeof params === 'object' ? { ...params } : params;\n  const v = value === params ? p : value;\n\n  const c = column as Column;\n  // oxlint-disable-next-line typescript/no-explicit-any\n  cloned.inputSchema = (c.inputSchema as any)[key](v, p);\n  // oxlint-disable-next-line typescript/no-explicit-any\n  cloned.outputSchema = (c.outputSchema as any)[key](v, p);\n  // oxlint-disable-next-line typescript/no-explicit-any\n  cloned.querySchema = (c.querySchema as any)[key](v, p);\n  return cloned as never;\n}\n\nfunction applySimpleMethod<T, Key extends string>(\n  column: T,\n  key: Key,\n  params?: Column.Error.StringOrMessage,\n) {\n  const c = column as Column;\n  const cloned = setDataValue(c, key, true, params) as Column;\n  // oxlint-disable-next-line typescript/no-explicit-any\n  cloned.inputSchema = (c.inputSchema as any)[key](params);\n  // oxlint-disable-next-line typescript/no-explicit-any\n  cloned.outputSchema = (c.outputSchema as any)[key](params);\n  // oxlint-disable-next-line typescript/no-explicit-any\n  cloned.querySchema = (c.querySchema as any)[key](params);\n  return cloned as never;\n}\n\ninterface ArrayMethods<Value> {\n  // Require a minimum length (inclusive)\n  min<T>(this: T, value: Value, params?: Column.Error.StringOrMessage): T;\n\n  // Require a maximum length (inclusive)\n  max<T>(this: T, value: Value, params?: Column.Error.StringOrMessage): T;\n\n  // Require a specific length\n  length<T>(this: T, value: Value, params?: Column.Error.StringOrMessage): T;\n\n  // Require a value to be non-empty\n  nonEmpty<T>(this: T, params?: Column.Error.StringOrMessage): T;\n}\n\nconst arrayMethods: ArrayMethods<Date> = {\n  min(value, params) {\n    return applyMethod(this, 'min', value, params);\n  },\n  max(value, params) {\n    return applyMethod(this, 'max', value, params);\n  },\n  length(value, params) {\n    return applyMethod(this, 'length', value, params);\n  },\n  nonEmpty(params) {\n    const column = this as Column;\n    const cloned = setDataValue(column, 'nonEmpty', true, params) as Column;\n    //\n    cloned.inputSchema = (column.inputSchema as ZodArray).nonempty(params);\n    cloned.outputSchema = (column.outputSchema as ZodArray).nonempty(params);\n    cloned.querySchema = (column.querySchema as ZodArray).nonempty(params);\n    return cloned as never;\n  },\n};\n\ninterface ZodArrayColumn<Item extends ArrayColumnValue>\n  extends\n    ArrayColumn<\n      ZodSchemaConfig,\n      Item,\n      ZodArray<Item['inputSchema']>,\n      ZodArray<Item['outputSchema']>,\n      ZodArray<Item['querySchema']>\n    >,\n    ArrayMethods<number> {}\n\nclass ZodArrayColumn<Item extends ArrayColumnValue> extends ArrayColumn<\n  ZodSchemaConfig,\n  Item,\n  ZodArray<Item['inputSchema']>,\n  ZodArray<Item['outputSchema']>,\n  ZodArray<Item['querySchema']>\n> {\n  constructor(schemaConfig: ZodSchemaConfig, item: Item) {\n    super(schemaConfig, item, z.array(item.inputSchema));\n  }\n}\n\nObject.assign(ZodArrayColumn.prototype, arrayMethods);\n\ninterface NumberMethods {\n  lt<T>(this: T, value: number, params?: Column.Error.StringOrMessage): T;\n  lte<T>(this: T, value: number, params?: Column.Error.StringOrMessage): T;\n  max<T>(this: T, value: number, params?: Column.Error.StringOrMessage): T;\n  gt<T>(this: T, value: number, params?: Column.Error.StringOrMessage): T;\n  gte<T>(this: T, value: number, params?: Column.Error.StringOrMessage): T;\n  min<T>(this: T, value: number, params?: Column.Error.StringOrMessage): T;\n  positive<T>(this: T, params?: Column.Error.StringOrMessage): T;\n  nonNegative<T>(this: T, params?: Column.Error.StringOrMessage): T;\n  negative<T>(this: T, params?: Column.Error.StringOrMessage): T;\n  nonPositive<T>(this: T, params?: Column.Error.StringOrMessage): T;\n  step<T>(this: T, value: number, params?: Column.Error.StringOrMessage): T;\n  int<T>(this: T, params?: Column.Error.StringOrMessage): T;\n  finite<T>(this: T, params?: Column.Error.StringOrMessage): T;\n  safe<T>(this: T, params?: Column.Error.StringOrMessage): T;\n}\n\nconst numberMethods: NumberMethods = {\n  // Require a value to be lower than a given number\n  lt(value, params) {\n    return applyMethod(this, 'lt', value, params);\n  },\n\n  // Require a value to be lower than or equal to a given number (the same as `max`)\n  lte(value, params) {\n    return applyMethod(this, 'lte', value, params);\n  },\n\n  // Require a value to be lower than or equal to a given number\n  max(value, params) {\n    return applyMethod(this, 'lte', value, params);\n  },\n\n  // Require a value to be greater than a given number\n  gt(value, params) {\n    return applyMethod(this, 'gt', value, params);\n  },\n\n  // Require a value to be greater than or equal to a given number (the same as `min`)\n  gte(value, params) {\n    return applyMethod(this, 'gte', value, params);\n  },\n\n  // Require a value to be greater than or equal to a given number\n  min(value, params) {\n    return applyMethod(this, 'gte', value, params);\n  },\n\n  // Require a value to be greater than 0\n  positive(params) {\n    return applyMethod(this, 'gt', 0, params);\n  },\n\n  // Require a value to be greater than or equal to 0\n  nonNegative(params) {\n    return applyMethod(this, 'gte', 0, params);\n  },\n\n  // Require a value to be lower than 0\n  negative(params) {\n    return applyMethod(this, 'lt', 0, params);\n  },\n\n  // Require a value to be lower than or equal to 0\n  nonPositive(params) {\n    return applyMethod(this, 'lte', 0, params);\n  },\n\n  // Require a value to be a multiple of a given number\n  step(value, params) {\n    return applyMethod(this, 'step', value, params);\n  },\n\n  // Require a value to be an integer\n  int(params) {\n    return applySimpleMethod(this, 'int', params);\n  },\n\n  // Exclude `Infinity` from being a valid value\n  finite(params) {\n    return applySimpleMethod(this, 'finite', params);\n  },\n\n  // Require the value to be less than or equal to Number.MAX_SAFE_INTEGER\n  safe(params) {\n    return applySimpleMethod(this, 'safe', params);\n  },\n};\n\ninterface SmallIntColumnZod\n  extends SmallIntColumn<ZodSchemaConfig>, NumberMethods {}\n\nclass SmallIntColumnZod extends SmallIntColumn<ZodSchemaConfig> {}\nObject.assign(SmallIntColumnZod.prototype, numberMethods);\n\ninterface IntegerColumnZod\n  extends IntegerColumn<ZodSchemaConfig>, NumberMethods {}\n\nclass IntegerColumnZod extends IntegerColumn<ZodSchemaConfig> {}\nObject.assign(IntegerColumnZod.prototype, numberMethods);\n\ninterface RealColumnZod extends RealColumn<ZodSchemaConfig>, NumberMethods {}\n\nclass RealColumnZod extends RealColumn<ZodSchemaConfig> {}\nObject.assign(RealColumnZod.prototype, numberMethods);\n\ninterface SmallSerialColumnZod\n  extends SmallSerialColumn<ZodSchemaConfig>, NumberMethods {}\n\nclass SmallSerialColumnZod extends SmallSerialColumn<ZodSchemaConfig> {}\nObject.assign(SmallSerialColumnZod.prototype, numberMethods);\n\ninterface SerialColumnZod\n  extends SerialColumn<ZodSchemaConfig>, NumberMethods {}\n\nclass SerialColumnZod extends SerialColumn<ZodSchemaConfig> {}\nObject.assign(SerialColumnZod.prototype, numberMethods);\n\ninterface StringMethods extends ArrayMethods<number> {\n  // Check a value to be a valid email\n  email<T>(this: T, params?: Column.Error.StringOrMessage): T;\n\n  // Check a value to be a valid url\n  url<T>(this: T, params?: Column.Error.StringOrMessage): T;\n\n  // Check a value to be an emoji\n  emoji<T>(this: T, params?: Column.Error.StringOrMessage): T;\n\n  // Check a value to be a valid uuid\n  uuid<T>(this: T, params?: Column.Error.StringOrMessage): T;\n\n  // Check a value to be a valid cuid\n  cuid<T>(this: T, params?: Column.Error.StringOrMessage): T;\n\n  // Check a value to be a valid cuid2\n  cuid2<T>(this: T, params?: Column.Error.StringOrMessage): T;\n\n  // Check a value to be a valid ulid\n  ulid<T>(this: T, params?: Column.Error.StringOrMessage): T;\n\n  // Validate the value over the given regular expression\n  regex<T>(this: T, value: RegExp, params?: Column.Error.StringOrMessage): T;\n\n  // Check a value to include a given string\n  includes<T, Value extends string>(\n    this: T,\n    value: Value,\n    params?: Column.Error.StringOrMessage,\n  ): T;\n\n  // Check a value to start with a given string\n  startsWith<T, Value extends string>(\n    this: T,\n    value: Value,\n    params?: Column.Error.StringOrMessage,\n  ): T;\n\n  // Check a value to end with a given string\n  endsWith<T, Value extends string>(\n    this: T,\n    value: Value,\n    params?: Column.Error.StringOrMessage,\n  ): T;\n\n  // Check a value have a valid datetime string\n  datetime<T>(\n    this: T,\n    params?: StringData['datetime'] &\n      Exclude<Column.Error.StringOrMessage, string>,\n  ): T;\n\n  // Check a value to be a valid ipv4 address\n  ipv4<T>(this: T, params?: Exclude<Column.Error.StringOrMessage, string>): T;\n\n  // Check a value to be a valid ipv6 address\n  ipv6<T>(this: T, params?: Exclude<Column.Error.StringOrMessage, string>): T;\n\n  // Trim the value during a validation\n  trim<T>(this: T, params?: Column.Error.StringOrMessage): T;\n\n  // Transform value to a lower case during a validation\n  toLowerCase<T>(this: T, params?: Column.Error.StringOrMessage): T;\n\n  // Transform value to an upper case during a validation\n  toUpperCase<T>(this: T, params?: Column.Error.StringOrMessage): T;\n}\n\nconst stringMethods: StringMethods = {\n  ...(arrayMethods as unknown as ArrayMethods<number>),\n\n  email(params) {\n    return applySimpleMethod(this, 'email', params);\n  },\n\n  url(params) {\n    return applySimpleMethod(this, 'url', params);\n  },\n\n  emoji(params) {\n    return applySimpleMethod(this, 'emoji', params);\n  },\n\n  uuid(params) {\n    return applySimpleMethod(this, 'uuid', params);\n  },\n\n  cuid(params) {\n    return applySimpleMethod(this, 'cuid', params);\n  },\n\n  cuid2(params) {\n    return applySimpleMethod(this, 'cuid2', params);\n  },\n\n  ulid(params) {\n    return applySimpleMethod(this, 'ulid', params);\n  },\n\n  regex(value, params) {\n    return applyMethod(this, 'regex', value, params);\n  },\n\n  includes(value, params) {\n    return applyMethod(this, 'includes', value, params);\n  },\n\n  startsWith(value, params) {\n    return applyMethod(this, 'startsWith', value, params);\n  },\n\n  endsWith(value, params) {\n    return applyMethod(this, 'endsWith', value, params);\n  },\n\n  datetime(params = {}) {\n    return applyMethod(this, 'datetime', params, params);\n  },\n\n  ipv4(params) {\n    return applyMethod(this, 'ipv4', params, params);\n  },\n\n  ipv6(params) {\n    return applyMethod(this, 'ipv6', params, params);\n  },\n\n  trim(params) {\n    return applySimpleMethod(this, 'trim', params);\n  },\n\n  toLowerCase(params) {\n    return applySimpleMethod(this, 'toLowerCase', params);\n  },\n\n  toUpperCase(params) {\n    return applySimpleMethod(this, 'toUpperCase', params);\n  },\n};\n\ninterface BigIntColumnZod\n  extends BigIntColumn<ZodSchemaConfig>, StringMethods {}\n\nclass BigIntColumnZod extends BigIntColumn<ZodSchemaConfig> {}\nObject.assign(BigIntColumnZod.prototype, stringMethods);\n\ninterface DecimalColumnZod\n  extends DecimalColumn<ZodSchemaConfig>, StringMethods {}\n\nclass DecimalColumnZod extends DecimalColumn<ZodSchemaConfig> {}\nObject.assign(DecimalColumnZod.prototype, stringMethods);\n\ninterface DoublePrecisionColumnZod\n  extends DoublePrecisionColumn<ZodSchemaConfig>, StringMethods {}\n\nclass DoublePrecisionColumnZod extends DoublePrecisionColumn<ZodSchemaConfig> {}\nObject.assign(DoublePrecisionColumnZod.prototype, stringMethods);\n\ninterface BigSerialColumnZod\n  extends BigSerialColumn<ZodSchemaConfig>, StringMethods {}\n\nclass BigSerialColumnZod extends BigSerialColumn<ZodSchemaConfig> {}\nObject.assign(BigSerialColumnZod.prototype, stringMethods);\n\ninterface MoneyColumnZod extends MoneyColumn<ZodSchemaConfig>, NumberMethods {}\n\nclass MoneyColumnZod extends MoneyColumn<ZodSchemaConfig> {}\nObject.assign(MoneyColumnZod.prototype, numberMethods);\n\ninterface VarCharColumnZod\n  extends VarCharColumn<ZodSchemaConfig>, StringMethods {}\n\nclass VarCharColumnZod extends VarCharColumn<ZodSchemaConfig> {}\nObject.assign(VarCharColumnZod.prototype, stringMethods);\n\ninterface TextColumnZod extends TextColumn<ZodSchemaConfig>, StringMethods {}\n\nclass TextColumnZod extends TextColumn<ZodSchemaConfig> {}\nObject.assign(TextColumnZod.prototype, stringMethods);\n\ninterface StringColumnZod\n  extends StringColumn<ZodSchemaConfig>, StringMethods {}\n\nclass StringColumnZod extends StringColumn<ZodSchemaConfig> {}\nObject.assign(StringColumnZod.prototype, stringMethods);\n\ninterface CitextColumnZod\n  extends CitextColumn<ZodSchemaConfig>, StringMethods {}\n\nclass CitextColumnZod extends CitextColumn<ZodSchemaConfig> {}\nObject.assign(CitextColumnZod.prototype, stringMethods);\n\ninterface DateMethods {\n  // Require a value to be greater than or equal to a given Date object\n  min<T>(this: T, value: Date, params?: Column.Error.StringOrMessage): T;\n\n  // Require a value to be lower than or equal to a given Date object\n  max<T>(this: T, value: Date, params?: Column.Error.StringOrMessage): T;\n}\n\nconst dateMethods: DateMethods = {\n  min(value, params) {\n    return applyMethod(this, 'min', value, params);\n  },\n  max(value, params) {\n    return applyMethod(this, 'max', value, params);\n  },\n};\n\ninterface DateColumnZod extends DateColumn<ZodSchemaConfig>, DateMethods {}\n\nclass DateColumnZod extends DateColumn<ZodSchemaConfig> {}\nObject.assign(DateColumnZod.prototype, dateMethods);\n\ninterface TimestampNoTzColumnZod\n  extends TimestampColumn<ZodSchemaConfig>, DateMethods {}\n\nclass TimestampNoTzColumnZod extends TimestampColumn<ZodSchemaConfig> {}\nObject.assign(TimestampNoTzColumnZod.prototype, dateMethods);\n\ninterface TimestampColumnZod\n  extends TimestampTZColumn<ZodSchemaConfig>, DateMethods {}\n\nclass TimestampColumnZod extends TimestampTZColumn<ZodSchemaConfig> {}\nObject.assign(TimestampColumnZod.prototype, dateMethods);\n\ntype PointSchemaZod = ZodObject<{\n  srid: ZodOptional<ZodNumber>;\n  lon: ZodNumber;\n  lat: ZodNumber;\n}>;\n\nlet pointSchema: PointSchemaZod | undefined;\n\nexport interface BareZodType {\n  _output: unknown;\n}\n\nexport interface ZodSchemaConfig extends ColumnSchemaConfig {\n  __schemaType: ZodTypeAny;\n\n  parse<\n    T extends Column.Pick.ForParse,\n    OutputSchema extends ZodTypeAny,\n    Output = OutputSchema['_output'],\n  >(\n    this: T,\n    _schema: OutputSchema,\n    fn: (input: T['__type']) => Output,\n  ): Column.Parse<T, OutputSchema, Output>;\n\n  parseNull<\n    T extends Column.Pick.ForParseNull,\n    NullSchema extends ZodTypeAny,\n    NullType = NullSchema['_output'],\n  >(\n    this: T,\n    _schema: NullSchema,\n    fn: () => NullType,\n  ): Column.ParseNull<T, NullSchema, NullType>;\n\n  encode<\n    T extends Column.Pick.Type,\n    InputSchema extends ZodTypeAny,\n    Input = InputSchema['_output'],\n  >(\n    this: T,\n    _schema: InputSchema,\n    fn: (input: Input) => unknown,\n  ): Column.Encode<T, InputSchema, Input>;\n\n  /**\n   * @deprecated use narrowType instead\n   */\n  asType<\n    T,\n    Types extends Column.AsTypeArg<ZodTypeAny>,\n    TypeSchema extends ZodTypeAny = Types extends { type: ZodTypeAny }\n      ? Types['type']\n      : never,\n    Type = TypeSchema['_output'],\n  >(\n    this: T,\n    types: Types,\n  ): {\n    [K in keyof T]: K extends '__type'\n      ? Type\n      : K extends '__inputType'\n        ? Types['input'] extends ZodTypeAny\n          ? Types['input']['_output']\n          : Type\n        : K extends 'inputSchema'\n          ? Types['input'] extends ZodTypeAny\n            ? Types['input']\n            : TypeSchema\n          : K extends '__outputType'\n            ? Types['output'] extends ZodTypeAny\n              ? Types['output']['_output']\n              : Type\n            : K extends 'outputSchema'\n              ? Types['output'] extends ZodTypeAny\n                ? Types['output']\n                : TypeSchema\n              : K extends '__queryType'\n                ? Types['query'] extends ZodTypeAny\n                  ? Types['query']['_output']\n                  : Type\n                : K extends 'querySchema'\n                  ? Types['query'] extends ZodTypeAny\n                    ? Types['query']\n                    : TypeSchema\n                  : T[K];\n  };\n\n  narrowType<\n    T extends Column.InputOutputQueryTypesWithSchemas,\n    Type extends {\n      _output: T['__inputType'] extends never\n        ? T['__outputType'] & T['__queryType']\n        : T['__inputType'] & T['__outputType'] & T['__queryType'];\n    },\n  >(\n    this: T,\n    type: Type,\n  ): {\n    [K in keyof T]: K extends '__inputType'\n      ? T['__inputType'] extends never\n        ? never\n        : Type['_output']\n      : K extends '__outputType' | '__queryType'\n        ? Type['_output']\n        : K extends 'inputSchema'\n          ? T['__inputType'] extends never\n            ? ZodNever\n            : Type\n          : K extends 'outputSchema' | 'querySchema'\n            ? Type\n            : T[K];\n  };\n\n  narrowAllTypes<\n    T extends Column.InputOutputQueryTypesWithSchemas,\n    Types extends {\n      input?: { _output: T['__inputType'] };\n      output?: { _output: T['__outputType'] };\n      query?: { _output: T['__queryType'] };\n    },\n  >(\n    this: T,\n    types: Types,\n  ): {\n    [K in keyof T]: K extends '__inputType'\n      ? Types['input'] extends BareZodType\n        ? Types['input']['_output']\n        : T['__inputType']\n      : K extends 'inputSchema'\n        ? Types['input'] extends BareZodType\n          ? Types['input']\n          : T['inputSchema']\n        : K extends '__outputType'\n          ? Types['output'] extends BareZodType\n            ? Types['output']['_output']\n            : T['__outputType']\n          : K extends 'outputSchema'\n            ? Types['output'] extends BareZodType\n              ? Types['output']\n              : T['outputSchema']\n            : K extends '__queryType'\n              ? Types['query'] extends BareZodType\n                ? Types['query']['_output']\n                : T['__queryType']\n              : K extends 'querySchema'\n                ? Types['query'] extends BareZodType\n                  ? Types['query']\n                  : T['querySchema']\n                : T[K];\n  };\n\n  dateAsNumber<T extends Column.Pick.ForParse>(\n    this: T,\n  ): Column.Parse<T, ZodNumber, number>;\n\n  dateAsDate<T extends Column.Pick.ForParse>(\n    this: T,\n  ): Column.Parse<T, ZodDate, Date>;\n\n  enum<T extends readonly string[]>(\n    dataType: string,\n    type: T,\n  ): EnumColumn<ZodSchemaConfig, ZodEnum<{ [K in T[number]]: K }>, T>;\n\n  array<Item extends ArrayColumnValue>(item: Item): ZodArrayColumn<Item>;\n\n  nullable<T extends Column.Pick.ForNullable>(\n    this: T,\n  ): Column.NullableWithSchema<\n    T,\n    ZodNullable<T['inputSchema']>,\n    T['nullSchema'] extends ZodTypeAny\n      ? ZodUnion<[T['outputSchema'], T['nullSchema']]>\n      : ZodNullable<T['outputSchema']>,\n    ZodNullable<T['querySchema']>\n  >;\n\n  json<ZodSchema extends ZodTypeAny = ZodUnknown>(\n    schema?: ZodSchema,\n  ): ZodJSONColumn<ZodSchema>;\n\n  jsonText<ZodSchema extends ZodTypeAny = ZodUnknown>(\n    schema?: ZodSchema,\n  ): ZodJSONTextColumn<ZodSchema>;\n\n  boolean(): ZodBoolean;\n  buffer(): ZodType<Buffer>;\n  unknown(): ZodUnknown;\n  never(): ZodNever;\n  stringSchema(): ZodString;\n  stringMin(max: number): ZodString;\n  stringMax(max: number): ZodString;\n  stringMinMax(min: number, max: number): ZodString;\n  number(): ZodNumber;\n  int(): ZodNumber;\n  stringNumberDate(): ZodDate;\n  timeInterval(): ZodObject<{\n    years: ZodOptional<ZodNumber>;\n    months: ZodOptional<ZodNumber>;\n    days: ZodOptional<ZodNumber>;\n    hours: ZodOptional<ZodNumber>;\n    minutes: ZodOptional<ZodNumber>;\n    seconds: ZodOptional<ZodNumber>;\n  }>;\n  bit(max: number): ZodString;\n  uuid(): ZodString;\n\n  inputSchema<T extends ColumnSchemaGetterTableClass>(\n    this: T,\n  ): MapSchema<T, 'inputSchema'>;\n\n  outputSchema<T extends ColumnSchemaGetterTableClass>(\n    this: T,\n  ): MapSchema<T, 'outputSchema'>;\n\n  querySchema<T extends ColumnSchemaGetterTableClass>(this: T): QuerySchema<T>;\n\n  createSchema<T extends ColumnSchemaGetterTableClass>(\n    this: T,\n  ): CreateSchema<T>;\n\n  updateSchema<T extends ColumnSchemaGetterTableClass>(\n    this: T,\n  ): UpdateSchema<T>;\n\n  pkeySchema<T extends ColumnSchemaGetterTableClass>(this: T): PkeySchema<T>;\n\n  error<T>(this: T, error: Column.Error.Messages): T;\n\n  smallint(): SmallIntColumnZod;\n  integer(): IntegerColumnZod;\n  real(): RealColumnZod;\n  smallSerial(): SmallSerialColumnZod;\n  serial(): SerialColumnZod;\n\n  bigint(): BigIntColumnZod;\n  decimal(precision?: number, scale?: number): DecimalColumnZod;\n  doublePrecision(): DoublePrecisionColumnZod;\n  bigSerial(): BigSerialColumnZod;\n  money(): MoneyColumnZod;\n  varchar(limit?: number): VarCharColumnZod;\n  text(): TextColumnZod;\n  string(limit?: number): StringColumnZod;\n  citext(): CitextColumnZod;\n\n  date(): DateColumnZod;\n  timestampNoTZ(precision?: number): TimestampNoTzColumnZod;\n  timestamp(precision?: number): TimestampColumnZod;\n\n  geographyPointSchema(): PointSchemaZod;\n}\n\nexport const zodSchemaConfig = (\n  options?: AdapterSchemaConfigOptions,\n): ZodSchemaConfig => {\n  const schemaConfig: ZodSchemaConfig = {\n    __schemaType: undefined as unknown as ZodTypeAny,\n    parse(schema, fn) {\n      return setColumnParse(this as never, fn, schema);\n    },\n    parseNull(schema, fn) {\n      return setColumnParseNull(this as never, fn, schema);\n    },\n    encode(schema, fn) {\n      return setColumnEncode(this as never, fn, schema);\n    },\n    asType(_types) {\n      return this as never;\n    },\n    narrowType(type) {\n      const c = Object.create(this);\n      if ((c as Column.Pick.Data).data.generated) {\n        c.outputSchema = c.querySchema = type;\n      } else {\n        c.inputSchema = c.outputSchema = c.querySchema = type;\n      }\n      return c as never;\n    },\n    narrowAllTypes(types) {\n      const c = Object.create(this);\n      if (types.input) {\n        c.inputSchema = types.input;\n      }\n      if (types.output) {\n        c.outputSchema = types.output;\n      }\n      if (types.query) {\n        c.querySchema = types.query;\n      }\n      return c as never;\n    },\n    dateAsNumber() {\n      // oxlint-disable-next-line typescript/no-explicit-any\n      return (this as any).parse(\n        z.number(),\n        getDateAsNumberFn(this as never),\n      ) as never;\n    },\n    dateAsDate() {\n      // oxlint-disable-next-line typescript/no-explicit-any\n      return (this as any).parse(\n        z.date(),\n        getDateAsDateFn(this as never),\n      ) as never;\n    },\n    enum(dataType, type) {\n      return new EnumColumn(\n        schemaConfig,\n        dataType,\n        Object.values(type),\n        z.enum(type),\n      ) as never;\n    },\n    array(item) {\n      return new ZodArrayColumn(schemaConfig, item);\n    },\n    nullable() {\n      return makeColumnNullable(\n        this as never,\n        z.nullable(this.inputSchema),\n        this.nullSchema\n          ? this.outputSchema.or(this.nullSchema)\n          : z.nullable(this.outputSchema),\n        z.nullable(this.querySchema),\n      ) as never;\n    },\n    json<ZodSchema extends ZodTypeAny = ZodUnknown>(schema?: ZodSchema) {\n      return new ZodJSONColumn(\n        schemaConfig,\n        (schema ?? z.unknown()) as ZodSchema,\n        options?.jsonEncodedByDriver,\n      );\n    },\n    jsonText<ZodSchema extends ZodTypeAny = ZodUnknown>(schema?: ZodSchema) {\n      return new ZodJSONTextColumn(\n        schemaConfig,\n        (schema ?? z.unknown()) as ZodSchema,\n      );\n    },\n    boolean: () => z.boolean(),\n    buffer: () => z.instanceof(Buffer),\n    unknown: () => z.unknown(),\n    never: () => z.never(),\n    stringSchema: () => z.string(),\n    stringMin(min) {\n      return z.string().min(min);\n    },\n    stringMax(max) {\n      return z.string().max(max);\n    },\n    stringMinMax(min, max) {\n      return z.string().min(min).max(max);\n    },\n    number: () => z.number(),\n    int: () => z.number().int(),\n\n    stringNumberDate: () => z.coerce.date(),\n\n    timeInterval: () =>\n      z.object({\n        years: z.number().optional(),\n        months: z.number().optional(),\n        days: z.number().optional(),\n        hours: z.number().optional(),\n        minutes: z.number().optional(),\n        seconds: z.number().optional(),\n      }),\n\n    bit: (max?: number) =>\n      (max ? z.string().max(max) : z.string()).regex(/[10]/g),\n\n    uuid: () => z.string().uuid(),\n\n    inputSchema() {\n      return mapSchema(this, 'inputSchema');\n    },\n\n    outputSchema() {\n      return mapSchema(this, 'outputSchema');\n    },\n\n    querySchema() {\n      const shape: RecordUnknown = {};\n      const { shape: columns } = this.prototype.columns;\n\n      for (const key in columns) {\n        const column = columns[key] as Column;\n        if (columns[key].dataType) {\n          shape[key] = (column.querySchema as ZodTypeAny).optional();\n        }\n      }\n\n      return z.object(shape) as never;\n    },\n\n    createSchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n      const input = this.inputSchema() as ZodObject<ZodRawShape>;\n\n      const shape: ZodShape = {};\n      const { shape: columns } = this.prototype.columns;\n\n      for (const key in columns) {\n        const column = columns[key];\n        if (column.dataType && !column.data.primaryKey) {\n          shape[key] = input.shape[key];\n\n          if (column.data.isNullable || column.data.default !== undefined) {\n            shape[key] = optional(shape[key]);\n          }\n        }\n      }\n\n      return z.object(shape) as unknown as CreateSchema<T>;\n    },\n\n    updateSchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n      return (this.createSchema() as ZodObject<ZodRawShape>).partial() as never;\n    },\n\n    pkeySchema<T extends ColumnSchemaGetterTableClass>(this: T) {\n      const pkeys: Record<string, true> = {};\n\n      const {\n        columns: { shape },\n      } = this.prototype;\n      for (const key in shape) {\n        if (shape[key].dataType && shape[key].data.primaryKey) {\n          pkeys[key] = true;\n        }\n      }\n\n      return (this.querySchema() as ZodObject<ZodRawShape>)\n        .pick(pkeys)\n        .required() as never;\n    },\n\n    /**\n     * `error` allows to specify two following validation messages:\n     *\n     * ```ts\n     * t.text().error({\n     *   required: 'This column is required',\n     *   invalidType: 'This column must be an integer',\n     * });\n     * ```\n     *\n     * It will be converted into `Zod`'s messages:\n     *\n     * ```ts\n     * z.string({\n     *   required_error: 'This column is required',\n     *   invalid_type_error: 'This column must be an integer',\n     * });\n     * ```\n     *\n     * Each validation method can accept an error message as a string:\n     *\n     * ```ts\n     * t.text().min(5, 'Must be 5 or more characters long');\n     * t.text().max(5, 'Must be 5 or fewer characters long');\n     * t.text().length(5, 'Must be exactly 5 characters long');\n     * t.text().email('Invalid email address');\n     * t.text().url('Invalid url');\n     * t.text().emoji('Contains non-emoji characters');\n     * t.text().uuid('Invalid UUID');\n     * t.text().includes('tuna', 'Must include tuna');\n     * t.text().startsWith('https://', 'Must provide secure URL');\n     * t.text().endsWith('.com', 'Only .com domains allowed');\n     * ```\n     *\n     * Except for `text().datetime()` and `text().ip()`:\n     *\n     * these methods can have their own parameters, so the error message is passed in object.\n     *\n     * ```ts\n     * t.text().datetime({ message: 'Invalid datetime string! Must be UTC.' });\n     * t.text().ip({ message: 'Invalid IP address' });\n     * ```\n     *\n     * Error messages are supported for a JSON schema as well:\n     *\n     * ```ts\n     * t.json((j) =>\n     *   j.object({\n     *     one: j\n     *       .string()\n     *       .error({ required: 'One is required' })\n     *       .min(5, 'Must be 5 or more characters long'),\n     *     two: j\n     *       .string()\n     *       .error({ invalidType: 'Two should be a string' })\n     *       .max(5, 'Must be 5 or fewer characters long'),\n     *     three: j.string().length(5, 'Must be exactly 5 characters long'),\n     *   }),\n     * );\n     * ```\n     *\n     * @param errors - object, key is either 'required' or 'invalidType', value is an error message\n     */\n    error(errors) {\n      const c = this as Column;\n      const { errors: old } = c.data;\n      const newErrors = old ? { ...old, ...errors } : errors;\n      const { required, invalidType } = newErrors;\n\n      const errorMap: $ZodErrorMap = (iss) => {\n        if (iss.code === 'invalid_type') {\n          return iss.input === undefined ? required : invalidType;\n        }\n        // not sure if this is correct to return undefined for other errors,\n        // let's wait for an issue.\n        return;\n      };\n\n      (c.inputSchema as ZodTypeAny).def.error =\n        (c.outputSchema as ZodTypeAny).def.error =\n        (c.querySchema as ZodTypeAny).def.error =\n          errorMap;\n\n      return setColumnData(c, 'errors', newErrors as never) as never;\n    },\n\n    smallint: () => new SmallIntColumnZod(schemaConfig),\n    integer: () => new IntegerColumnZod(schemaConfig),\n    real: () => new RealColumnZod(schemaConfig),\n    smallSerial: () => new SmallSerialColumnZod(schemaConfig),\n    serial: () => new SerialColumnZod(schemaConfig),\n\n    bigint: () => new BigIntColumnZod(schemaConfig),\n    decimal: (precision, scale) =>\n      new DecimalColumnZod(schemaConfig, precision, scale),\n    doublePrecision: () => new DoublePrecisionColumnZod(schemaConfig),\n    bigSerial: () => new BigSerialColumnZod(schemaConfig),\n    money: () => new MoneyColumnZod(schemaConfig),\n    varchar: (limit) => new VarCharColumnZod(schemaConfig, limit),\n    text: () => new TextColumnZod(schemaConfig),\n    string: (limit) => new StringColumnZod(schemaConfig, limit),\n    citext: () => new CitextColumnZod(schemaConfig),\n\n    date: () => new DateColumnZod(schemaConfig, options?.dateParsedByDriver),\n    timestampNoTZ: (precision) =>\n      new TimestampNoTzColumnZod(\n        schemaConfig,\n        precision,\n        options?.dateParsedByDriver,\n      ),\n    timestamp: (precision) =>\n      new TimestampColumnZod(\n        schemaConfig,\n        precision,\n        options?.dateParsedByDriver,\n      ),\n\n    geographyPointSchema: () =>\n      (pointSchema ??= z.object({\n        srid: z.number().optional(),\n        lon: z.number(),\n        lat: z.number(),\n      })),\n  };\n\n  return schemaConfig;\n};\n\ntype MapSchema<\n  T extends ColumnSchemaGetterTableClass,\n  Key extends 'inputSchema' | 'outputSchema' | 'querySchema',\n> = ZodObject<\n  {\n    [K in keyof ColumnSchemaGetterColumns<T>]: ColumnValidationSchema<\n      T,\n      K,\n      Key\n    >;\n  },\n  core.$strip\n>;\n\ntype TableName<T extends ColumnSchemaGetterTableClass> = T['data'] extends {\n  table: infer Table extends string;\n}\n  ? Table\n  : T['data'] extends { name: infer Name extends string }\n    ? Name\n    : never;\n\n// The default token is represented as `true | string` before table binding.\ntype ColumnBrand<\n  Column,\n  Table extends string,\n  Key extends string,\n> = Column extends { data: { branded: infer Brand extends string | true } }\n  ? true extends Brand\n    ? `${Table}.${Key}`\n    : Brand & string\n  : never;\n\ntype BrandedSchema<\n  Schema,\n  Brand extends PropertyKey,\n> = Schema extends ZodTypeAny ? core.$ZodBranded<Schema, Brand> : Schema;\n\ntype ColumnValidationSchema<\n  T extends ColumnSchemaGetterTableClass,\n  K extends keyof ColumnSchemaGetterColumns<T>,\n  Key extends 'inputSchema' | 'outputSchema' | 'querySchema',\n  Brand extends PropertyKey = ColumnBrand<\n    ColumnSchemaGetterColumns<T>[K],\n    TableName<T>,\n    K & string\n  >,\n> = [Brand] extends [never]\n  ? ColumnSchemaGetterColumns<T>[K][Key]\n  : BrandedSchema<ColumnSchemaGetterColumns<T>[K][Key], Brand>;\n\ntype QuerySchema<T extends ColumnSchemaGetterTableClass> = ZodObject<\n  {\n    [K in keyof ColumnSchemaGetterColumns<T>]: ZodOptional<\n      ColumnValidationSchema<T, K, 'querySchema'>\n    >;\n  },\n  core.$strip\n>;\n\ntype CreateSchema<T extends ColumnSchemaGetterTableClass> = ZodObject<\n  {\n    [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n      ? never\n      : K]: ColumnSchemaGetterColumns<T>[K]['data']['isNullable'] extends true\n      ? ZodOptional<ColumnValidationSchema<T, K, 'inputSchema'>>\n      : ColumnSchemaGetterColumns<T>[K]['data']['default'] extends true\n        ? ZodOptional<ColumnValidationSchema<T, K, 'inputSchema'>>\n        : ColumnValidationSchema<T, K, 'inputSchema'>;\n  },\n  core.$strip\n>;\n\ntype UpdateSchema<T extends ColumnSchemaGetterTableClass> = ZodObject<\n  {\n    [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n      ? never\n      : K]: ZodOptional<ColumnValidationSchema<T, K, 'inputSchema'>>;\n  },\n  core.$strip\n>;\n\ntype PkeySchema<T extends ColumnSchemaGetterTableClass> = ZodObject<\n  {\n    [K in keyof ColumnSchemaGetterColumns<T> as ColumnSchemaGetterColumns<T>[K]['data']['primaryKey'] extends string\n      ? K\n      : never]: ColumnValidationSchema<T, K, 'inputSchema'>;\n  },\n  core.$strip\n>;\n\nfunction mapSchema<\n  T extends ColumnSchemaGetterTableClass,\n  Key extends 'inputSchema' | 'outputSchema' | 'querySchema',\n>(klass: T, schemaKey: Key): MapSchema<T, Key> {\n  const shape: ZodShape = {};\n  const { shape: columns } = klass.prototype.columns;\n\n  for (const key in columns) {\n    if (columns[key].dataType) {\n      shape[key] = columns[key][schemaKey];\n    }\n  }\n\n  return z.object(shape) as MapSchema<T, Key>;\n}\n"],"mappings":"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"}