// Loaded from https://raw.githubusercontent.com/colinhacks/zod/654680afc2ede388e71e09104eac5a0088fe3207/deno/lib/types/record.ts import { ZodTypes } from "../ZodTypes.ts"; import { ZodType, ZodTypeDef, ZodTypeAny } from "./base.ts"; // import { ZodUndefined } from './undefined'; // import { ZodNull } from './null'; // import { ZodUnion } from './union'; export interface ZodRecordDef extends ZodTypeDef { t: ZodTypes.record; valueType: Value; } export class ZodRecord extends ZodType< Record, // { [k in keyof T]: T[k]['_type'] }, ZodRecordDef, Record > { readonly _value!: Value; toJSON = () => ({ t: this._def.t, valueType: this._def.valueType.toJSON(), }); // opt optional: () => ZodUnion<[this, ZodUndefined]> = () => ZodUnion.create([this, ZodUndefined.create()]); // null nullable: () => ZodUnion<[this, ZodNull]> = () => ZodUnion.create([this, ZodNull.create()]); static create = ( valueType: Value ): ZodRecord => { return new ZodRecord({ t: ZodTypes.record, valueType, }); }; }