UNPKG

jorel

Version:

A unified wrapper for working with LLMs from multiple providers, including streams, images, documents & automatic tool use.

37 lines (36 loc) 1.34 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.zodSchemaToJsonSchema = void 0; const zod_1 = require("openai/helpers/zod"); const zod_2 = require("zod"); const zod_to_json_schema_1 = require("zod-to-json-schema"); const object_utils_1 = require("./object-utils"); function isZodV4(zodObject) { return "_zod" in zodObject; } const zodSchemaToJsonSchema = (zodObject, target = "jsonSchema7", name = "response") => { if (target === "openAi") { return (0, zod_1.zodTextFormat)(zodObject, name).schema; } return deepClean(isZodV4(zodObject) ? (0, zod_2.toJSONSchema)(zodObject, { target: "draft-7", }) : (0, zod_to_json_schema_1.zodToJsonSchema)(zodObject, { target: "jsonSchema7", }), ["additionalProperties"]); }; exports.zodSchemaToJsonSchema = zodSchemaToJsonSchema; function deepClean(schema, keysToRemove) { if (Array.isArray(schema)) { return schema.map((item) => deepClean(item, keysToRemove)); } else if (typeof schema === "object" && schema !== null) { const cleaned = (0, object_utils_1.omit)(schema, keysToRemove); for (const key of Object.keys(cleaned)) { cleaned[key] = deepClean(cleaned[key], keysToRemove); } return cleaned; } return schema; }