{"version":3,"file":"record.cjs","names":["def: ZodRecordDef<ZodTypeAny, ZodTypeAny> | ZodMapDef","refs: Refs","ZodFirstPartyTypeKind","acc: Record<string, JsonSchema7Type>","key: string","parseDef","parseAnyDef","schema: JsonSchema7RecordType","parseStringDef","parseBrandedDef"],"sources":["../../../../src/utils/zod-to-json-schema/parsers/record.ts"],"sourcesContent":["import {\n  ZodFirstPartyTypeKind,\n  ZodMapDef,\n  ZodRecordDef,\n  ZodTypeAny,\n} from \"zod/v3\";\nimport { parseDef } from \"../parseDef.js\";\nimport { JsonSchema7Type } from \"../parseTypes.js\";\nimport { Refs } from \"../Refs.js\";\nimport { JsonSchema7EnumType } from \"./enum.js\";\nimport { JsonSchema7ObjectType } from \"./object.js\";\nimport { JsonSchema7StringType, parseStringDef } from \"./string.js\";\nimport { parseBrandedDef } from \"./branded.js\";\nimport { parseAnyDef } from \"./any.js\";\n\ntype JsonSchema7RecordPropertyNamesType =\n  | Omit<JsonSchema7StringType, \"type\">\n  | Omit<JsonSchema7EnumType, \"type\">;\n\nexport type JsonSchema7RecordType = {\n  type: \"object\";\n  additionalProperties?: JsonSchema7Type | true;\n  propertyNames?: JsonSchema7RecordPropertyNamesType;\n};\n\nexport function parseRecordDef(\n  def: ZodRecordDef<ZodTypeAny, ZodTypeAny> | ZodMapDef,\n  refs: Refs\n): JsonSchema7RecordType {\n  if (refs.target === \"openAi\") {\n    console.warn(\n      \"Warning: OpenAI may not support records in schemas! Try an array of key-value pairs instead.\"\n    );\n  }\n\n  if (\n    refs.target === \"openApi3\" &&\n    def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum\n  ) {\n    return {\n      type: \"object\",\n      required: def.keyType._def.values,\n      properties: def.keyType._def.values.reduce(\n        (acc: Record<string, JsonSchema7Type>, key: string) => ({\n          ...acc,\n          [key]:\n            parseDef(def.valueType._def, {\n              ...refs,\n              currentPath: [...refs.currentPath, \"properties\", key],\n            }) ?? parseAnyDef(refs),\n        }),\n        {}\n      ),\n      additionalProperties: refs.rejectedAdditionalProperties,\n    } satisfies JsonSchema7ObjectType as any;\n  }\n\n  const schema: JsonSchema7RecordType = {\n    type: \"object\",\n    additionalProperties:\n      parseDef(def.valueType._def, {\n        ...refs,\n        currentPath: [...refs.currentPath, \"additionalProperties\"],\n      }) ?? refs.allowedAdditionalProperties,\n  };\n\n  if (refs.target === \"openApi3\") {\n    return schema;\n  }\n\n  if (\n    def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n    def.keyType._def.checks?.length\n  ) {\n    const { type, ...keyType } = parseStringDef(def.keyType._def, refs);\n\n    return {\n      ...schema,\n      propertyNames: keyType,\n    };\n  } else if (def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodEnum) {\n    return {\n      ...schema,\n      propertyNames: {\n        enum: def.keyType._def.values,\n      },\n    };\n  } else if (\n    def.keyType?._def.typeName === ZodFirstPartyTypeKind.ZodBranded &&\n    def.keyType._def.type._def.typeName === ZodFirstPartyTypeKind.ZodString &&\n    def.keyType._def.type._def.checks?.length\n  ) {\n    const { type, ...keyType } = parseBrandedDef(\n      def.keyType._def,\n      refs\n    ) as JsonSchema7StringType;\n\n    return {\n      ...schema,\n      propertyNames: keyType,\n    };\n  }\n\n  return schema;\n}\n"],"mappings":";;;;;;;;AAyBA,SAAgB,eACdA,KACAC,MACuB;AACvB,KAAI,KAAK,WAAW,UAClB,QAAQ,KACN,+FACD;AAGH,KACE,KAAK,WAAW,cAChB,IAAI,SAAS,KAAK,aAAaC,6BAAsB,QAErD,QAAO;EACL,MAAM;EACN,UAAU,IAAI,QAAQ,KAAK;EAC3B,YAAY,IAAI,QAAQ,KAAK,OAAO,OAClC,CAACC,KAAsCC,SAAiB;GACtD,GAAG;IACF,MACCC,0BAAS,IAAI,UAAU,MAAM;IAC3B,GAAG;IACH,aAAa;KAAC,GAAG,KAAK;KAAa;KAAc;IAAI;GACtD,EAAC,IAAIC,wBAAY,KAAK;EAC1B,IACD,CAAE,EACH;EACD,sBAAsB,KAAK;CAC5B;CAGH,MAAMC,SAAgC;EACpC,MAAM;EACN,sBACEF,0BAAS,IAAI,UAAU,MAAM;GAC3B,GAAG;GACH,aAAa,CAAC,GAAG,KAAK,aAAa,sBAAuB;EAC3D,EAAC,IAAI,KAAK;CACd;AAED,KAAI,KAAK,WAAW,WAClB,QAAO;AAGT,KACE,IAAI,SAAS,KAAK,aAAaH,6BAAsB,aACrD,IAAI,QAAQ,KAAK,QAAQ,QACzB;EACA,MAAM,EAAE,KAAM,GAAG,SAAS,GAAGM,8BAAe,IAAI,QAAQ,MAAM,KAAK;AAEnE,SAAO;GACL,GAAG;GACH,eAAe;EAChB;CACF,WAAU,IAAI,SAAS,KAAK,aAAaN,6BAAsB,QAC9D,QAAO;EACL,GAAG;EACH,eAAe,EACb,MAAM,IAAI,QAAQ,KAAK,OACxB;CACF;UAED,IAAI,SAAS,KAAK,aAAaA,6BAAsB,cACrD,IAAI,QAAQ,KAAK,KAAK,KAAK,aAAaA,6BAAsB,aAC9D,IAAI,QAAQ,KAAK,KAAK,KAAK,QAAQ,QACnC;EACA,MAAM,EAAE,KAAM,GAAG,SAAS,GAAGO,gCAC3B,IAAI,QAAQ,MACZ,KACD;AAED,SAAO;GACL,GAAG;GACH,eAAe;EAChB;CACF;AAED,QAAO;AACR"}