@mastra/schema-compat
Version:
Tool schema compatibility layer for Mastra.ai
76 lines (71 loc) • 2.52 kB
JavaScript
;
var chunkSKPYVQBT_cjs = require('./chunk-SKPYVQBT.cjs');
var chunkDZUJEN5N_cjs = require('./chunk-DZUJEN5N.cjs');
var zodToJsonSchemaOriginal = require('zod-to-json-schema');
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
var zodToJsonSchemaOriginal__default = /*#__PURE__*/_interopDefault(zodToJsonSchemaOriginal);
// src/standard-schema/adapters/zod-v3.ts
var import_json_schema_traverse = chunkDZUJEN5N_cjs.__toESM(chunkSKPYVQBT_cjs.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__default.default(zodSchema, {
$refStrategy: "none",
target,
override: (def) => {
if (def.typeName === "ZodDate") {
return { type: "string", format: "date-time", "x-date": true };
}
return zodToJsonSchemaOriginal.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;
}
exports.toStandardSchema = toStandardSchema;
//# sourceMappingURL=chunk-BQ3VTMIR.cjs.map
//# sourceMappingURL=chunk-BQ3VTMIR.cjs.map