{"version":3,"file":"object.cjs","names":["parseDef"],"sources":["../../../../src/utils/zod-to-json-schema/parsers/object.ts"],"sourcesContent":["import { ZodObjectDef, ZodTypeAny } from \"zod/v3\";\nimport { parseDef } from \"../parseDef.js\";\nimport { JsonSchema7Type } from \"../parseTypes.js\";\nimport { Refs } from \"../Refs.js\";\n\nexport type JsonSchema7ObjectType = {\n  type: \"object\";\n  properties: Record<string, JsonSchema7Type>;\n  additionalProperties?: boolean | JsonSchema7Type;\n  required?: string[];\n};\n\nexport function parseObjectDef(def: ZodObjectDef, refs: Refs) {\n  const forceOptionalIntoNullable = refs.target === \"openAi\";\n\n  const result: JsonSchema7ObjectType = {\n    type: \"object\",\n    properties: {},\n  };\n\n  const required: string[] = [];\n\n  const shape = def.shape();\n\n  for (const propName in shape) {\n    let propDef = shape[propName];\n\n    if (propDef === undefined || propDef._def === undefined) {\n      continue;\n    }\n\n    let propOptional = safeIsOptional(propDef);\n\n    if (propOptional && forceOptionalIntoNullable) {\n      if (propDef._def.typeName === \"ZodOptional\") {\n        propDef = propDef._def.innerType;\n      }\n\n      if (!propDef.isNullable()) {\n        propDef = propDef.nullable();\n      }\n\n      propOptional = false;\n    }\n\n    const parsedDef = parseDef(propDef._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, \"properties\", propName],\n      propertyPath: [...refs.currentPath, \"properties\", propName],\n    });\n\n    if (parsedDef === undefined) {\n      continue;\n    }\n\n    result.properties[propName] = parsedDef;\n\n    if (!propOptional) {\n      required.push(propName);\n    }\n  }\n\n  if (required.length) {\n    result.required = required;\n  }\n\n  const additionalProperties = decideAdditionalProperties(def, refs);\n\n  if (additionalProperties !== undefined) {\n    result.additionalProperties = additionalProperties;\n  }\n\n  return result;\n}\n\nfunction decideAdditionalProperties(def: ZodObjectDef, refs: Refs) {\n  if (def.catchall._def.typeName !== \"ZodNever\") {\n    return parseDef(def.catchall._def, {\n      ...refs,\n      currentPath: [...refs.currentPath, \"additionalProperties\"],\n    });\n  }\n\n  switch (def.unknownKeys) {\n    case \"passthrough\":\n      return refs.allowedAdditionalProperties;\n    case \"strict\":\n      return refs.rejectedAdditionalProperties;\n    case \"strip\":\n      return refs.removeAdditionalStrategy === \"strict\"\n        ? refs.allowedAdditionalProperties\n        : refs.rejectedAdditionalProperties;\n  }\n}\n\nfunction safeIsOptional(schema: ZodTypeAny): boolean {\n  try {\n    return schema.isOptional();\n  } catch {\n    return true;\n  }\n}\n"],"mappings":";;AAYA,SAAgB,eAAe,KAAmB,MAAY;CAC5D,MAAM,4BAA4B,KAAK,WAAW;CAElD,MAAM,SAAgC;EACpC,MAAM;EACN,YAAY,EAAE;EACf;CAED,MAAM,WAAqB,EAAE;CAE7B,MAAM,QAAQ,IAAI,OAAO;AAEzB,MAAK,MAAM,YAAY,OAAO;EAC5B,IAAI,UAAU,MAAM;AAEpB,MAAI,YAAY,KAAA,KAAa,QAAQ,SAAS,KAAA,EAC5C;EAGF,IAAI,eAAe,eAAe,QAAQ;AAE1C,MAAI,gBAAgB,2BAA2B;AAC7C,OAAI,QAAQ,KAAK,aAAa,cAC5B,WAAU,QAAQ,KAAK;AAGzB,OAAI,CAAC,QAAQ,YAAY,CACvB,WAAU,QAAQ,UAAU;AAG9B,kBAAe;;EAGjB,MAAM,YAAYA,iBAAAA,SAAS,QAAQ,MAAM;GACvC,GAAG;GACH,aAAa;IAAC,GAAG,KAAK;IAAa;IAAc;IAAS;GAC1D,cAAc;IAAC,GAAG,KAAK;IAAa;IAAc;IAAS;GAC5D,CAAC;AAEF,MAAI,cAAc,KAAA,EAChB;AAGF,SAAO,WAAW,YAAY;AAE9B,MAAI,CAAC,aACH,UAAS,KAAK,SAAS;;AAI3B,KAAI,SAAS,OACX,QAAO,WAAW;CAGpB,MAAM,uBAAuB,2BAA2B,KAAK,KAAK;AAElE,KAAI,yBAAyB,KAAA,EAC3B,QAAO,uBAAuB;AAGhC,QAAO;;AAGT,SAAS,2BAA2B,KAAmB,MAAY;AACjE,KAAI,IAAI,SAAS,KAAK,aAAa,WACjC,QAAOA,iBAAAA,SAAS,IAAI,SAAS,MAAM;EACjC,GAAG;EACH,aAAa,CAAC,GAAG,KAAK,aAAa,uBAAuB;EAC3D,CAAC;AAGJ,SAAQ,IAAI,aAAZ;EACE,KAAK,cACH,QAAO,KAAK;EACd,KAAK,SACH,QAAO,KAAK;EACd,KAAK,QACH,QAAO,KAAK,6BAA6B,WACrC,KAAK,8BACL,KAAK;;;AAIf,SAAS,eAAe,QAA6B;AACnD,KAAI;AACF,SAAO,OAAO,YAAY;SACpB;AACN,SAAO"}