{"version":3,"file":"record.cjs","names":["ZodFirstPartyTypeKind","parseDef","parseAnyDef","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,eACd,KACA,MACuB;AACvB,KAAI,KAAK,WAAW,SAClB,SAAQ,KACN,+FACD;AAGH,KACE,KAAK,WAAW,cAChB,IAAI,SAAS,KAAK,aAAaA,OAAAA,sBAAsB,QAErD,QAAO;EACL,MAAM;EACN,UAAU,IAAI,QAAQ,KAAK;EAC3B,YAAY,IAAI,QAAQ,KAAK,OAAO,QACjC,KAAsC,SAAiB;GACtD,GAAG;IACF,MACCC,iBAAAA,SAAS,IAAI,UAAU,MAAM;IAC3B,GAAG;IACH,aAAa;KAAC,GAAG,KAAK;KAAa;KAAc;KAAI;IACtD,CAAC,IAAIC,YAAAA,YAAY,KAAK;GAC1B,GACD,EAAE,CACH;EACD,sBAAsB,KAAK;EAC5B;CAGH,MAAM,SAAgC;EACpC,MAAM;EACN,sBACED,iBAAAA,SAAS,IAAI,UAAU,MAAM;GAC3B,GAAG;GACH,aAAa,CAAC,GAAG,KAAK,aAAa,uBAAuB;GAC3D,CAAC,IAAI,KAAK;EACd;AAED,KAAI,KAAK,WAAW,WAClB,QAAO;AAGT,KACE,IAAI,SAAS,KAAK,aAAaD,OAAAA,sBAAsB,aACrD,IAAI,QAAQ,KAAK,QAAQ,QACzB;EACA,MAAM,EAAE,MAAM,GAAG,YAAYG,eAAAA,eAAe,IAAI,QAAQ,MAAM,KAAK;AAEnE,SAAO;GACL,GAAG;GACH,eAAe;GAChB;YACQ,IAAI,SAAS,KAAK,aAAaH,OAAAA,sBAAsB,QAC9D,QAAO;EACL,GAAG;EACH,eAAe,EACb,MAAM,IAAI,QAAQ,KAAK,QACxB;EACF;UAED,IAAI,SAAS,KAAK,aAAaA,OAAAA,sBAAsB,cACrD,IAAI,QAAQ,KAAK,KAAK,KAAK,aAAaA,OAAAA,sBAAsB,aAC9D,IAAI,QAAQ,KAAK,KAAK,KAAK,QAAQ,QACnC;EACA,MAAM,EAAE,MAAM,GAAG,YAAYI,gBAAAA,gBAC3B,IAAI,QAAQ,MACZ,KACD;AAED,SAAO;GACL,GAAG;GACH,eAAe;GAChB;;AAGH,QAAO"}