Buckets:
| // @ts-ignore TS6133 | |
| import { expect, test } from "vitest"; | |
| import * as z from "zod/v3"; | |
| import { util } from "../helpers/util.js"; | |
| test("generics", () => { | |
| async function stripOuter<TData extends z.ZodTypeAny>(schema: TData, data: unknown) { | |
| return z | |
| .object({ | |
| nested: schema, // as z.ZodTypeAny, | |
| }) | |
| .transform((data) => { | |
| return data.nested!; | |
| }) | |
| .parse({ nested: data }); | |
| } | |
| const result = stripOuter(z.object({ a: z.string() }), { a: "asdf" }); | |
| util.assertEqual<typeof result, Promise<{ a: string }>>(true); | |
| }); | |
| // test("assignability", () => { | |
| // const createSchemaAndParse = <K extends string, VS extends z.ZodString>( | |
| // key: K, | |
| // valueSchema: VS, | |
| // data: unknown | |
| // ) => { | |
| // const schema = z.object({ | |
| // [key]: valueSchema, | |
| // } as { [k in K]: VS }); | |
| // return { [key]: valueSchema }; | |
| // const parsed = schema.parse(data); | |
| // return parsed; | |
| // // const inferred: z.infer<z.ZodObject<{ [k in K]: VS }>> = parsed; | |
| // // return inferred; | |
| // }; | |
| // const parsed = createSchemaAndParse("foo", z.string(), { foo: "" }); | |
| // util.assertEqual<typeof parsed, { foo: string }>(true); | |
| // }); | |
| test("nested no undefined", () => { | |
| const inner = z.string().or(z.array(z.string())); | |
| const outer = z.object({ inner }); | |
| type outerSchema = z.infer<typeof outer>; | |
| z.util.assertEqual<outerSchema, { inner: string | string[] }>(true); | |
| expect(outer.safeParse({ inner: undefined }).success).toEqual(false); | |
| }); | |
Xet Storage Details
- Size:
- 1.52 kB
- Xet hash:
- 366057f48b718a16ad3c433eb248f86fb186e86d0a8ae67decd7c7c1689a9ea7
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.