UNPKG

@langchain/core

Version:
64 lines (62 loc) 2.02 kB
const require_parseDef = require('../parseDef.cjs'); //#region src/utils/zod-to-json-schema/parsers/object.ts function parseObjectDef(def, refs) { const forceOptionalIntoNullable = refs.target === "openAi"; const result = { type: "object", properties: {} }; const required = []; const shape = def.shape(); for (const propName in shape) { let propDef = shape[propName]; if (propDef === void 0 || propDef._def === void 0) continue; let propOptional = safeIsOptional(propDef); if (propOptional && forceOptionalIntoNullable) { if (propDef._def.typeName === "ZodOptional") propDef = propDef._def.innerType; if (!propDef.isNullable()) propDef = propDef.nullable(); propOptional = false; } const parsedDef = require_parseDef.parseDef(propDef._def, { ...refs, currentPath: [ ...refs.currentPath, "properties", propName ], propertyPath: [ ...refs.currentPath, "properties", propName ] }); if (parsedDef === void 0) continue; result.properties[propName] = parsedDef; if (!propOptional) required.push(propName); } if (required.length) result.required = required; const additionalProperties = decideAdditionalProperties(def, refs); if (additionalProperties !== void 0) result.additionalProperties = additionalProperties; return result; } function decideAdditionalProperties(def, refs) { if (def.catchall._def.typeName !== "ZodNever") return require_parseDef.parseDef(def.catchall._def, { ...refs, currentPath: [...refs.currentPath, "additionalProperties"] }); switch (def.unknownKeys) { case "passthrough": return refs.allowedAdditionalProperties; case "strict": return refs.rejectedAdditionalProperties; case "strip": return refs.removeAdditionalStrategy === "strict" ? refs.allowedAdditionalProperties : refs.rejectedAdditionalProperties; } } function safeIsOptional(schema) { try { return schema.isOptional(); } catch { return true; } } //#endregion exports.parseObjectDef = parseObjectDef; //# sourceMappingURL=object.cjs.map