UNPKG

@mastra/schema-compat

Version:

Tool schema compatibility layer for Mastra.ai

70 lines (68 loc) 2.26 kB
import { require_json_schema_traverse } from './chunk-Y4VRRNL5.js'; import { __toESM } from './chunk-5WRI5ZAA.js'; import zodToJsonSchemaOriginal, { ignoreOverride } from 'zod-to-json-schema'; // src/standard-schema/adapters/zod-v3.ts var import_json_schema_traverse = __toESM(require_json_schema_traverse(), 1); var TARGET_MAP = { "draft-04": "jsonSchema7", "draft-07": "jsonSchema7", "draft-2020-12": "jsonSchema2019-09", "openapi-3.0": "openApi3" }; function convertToJsonSchema(zodSchema, options) { const target = TARGET_MAP[options.target]; if (!target) { const supportedTargets = Object.keys(TARGET_MAP); throw new Error( `Unsupported JSON Schema target: "${options.target}". Supported targets are: ${supportedTargets.join(", ")}` ); } const jsonSchema = zodToJsonSchemaOriginal(zodSchema, { $refStrategy: "none", target, override: (def) => { if (def.typeName === "ZodDate") { return { type: "string", format: "date-time", "x-date": true }; } return ignoreOverride; } }); (0, import_json_schema_traverse.default)(jsonSchema, { cb: { pre: (schema) => { if (schema.type === "string" && schema.format === "email") { schema.pattern = `^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$`; } } // post: (schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema) => { // this.postProcessJSONNode(schema, parentSchema); // }, } }); return jsonSchema; } function toStandardSchema(zodSchema) { const wrapper = Object.create(zodSchema); const existingStandard = zodSchema["~standard"]; const jsonSchemaConverter = { input: (options) => { return convertToJsonSchema(zodSchema, options); }, output: (options) => { return convertToJsonSchema(zodSchema, options); } }; Object.defineProperty(wrapper, "~standard", { value: { ...existingStandard, jsonSchema: jsonSchemaConverter }, writable: false, enumerable: true, configurable: false }); return wrapper; } export { toStandardSchema }; //# sourceMappingURL=chunk-QFEMCRFS.js.map //# sourceMappingURL=chunk-QFEMCRFS.js.map