Extremely Popular
Latest
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174import Benchmark from "benchmark";
import { Mocker } from "../__tests__/Mocker.ts";import { z } from "../index.ts";
const val = new Mocker();
const enumSuite = new Benchmark.Suite("z.enum");const enumSchema = z.enum(["a", "b", "c"]);
enumSuite .add("valid", () => { enumSchema.parse("a"); }) .add("invalid", () => { try { enumSchema.parse("x"); } catch (e) {} }) .on("cycle", (e: Benchmark.Event) => { console.log(`z.enum: ${e.target}`); });
const longEnumSuite = new Benchmark.Suite("long z.enum");const longEnumSchema = z.enum([ "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen",]);
longEnumSuite .add("valid", () => { longEnumSchema.parse("five"); }) .add("invalid", () => { try { longEnumSchema.parse("invalid"); } catch (e) {} }) .on("cycle", (e: Benchmark.Event) => { console.log(`long z.enum: ${e.target}`); });
const undefinedSuite = new Benchmark.Suite("z.undefined");const undefinedSchema = z.undefined();
undefinedSuite .add("valid", () => { undefinedSchema.parse(undefined); }) .add("invalid", () => { try { undefinedSchema.parse(1); } catch (e) {} }) .on("cycle", (e: Benchmark.Event) => { console.log(`z.undefined: ${e.target}`); });
const literalSuite = new Benchmark.Suite("z.literal");const short = "short";const bad = "bad";const literalSchema = z.literal("short");
literalSuite .add("valid", () => { literalSchema.parse(short); }) .add("invalid", () => { try { literalSchema.parse(bad); } catch (e) {} }) .on("cycle", (e: Benchmark.Event) => { console.log(`z.literal: ${e.target}`); });
const numberSuite = new Benchmark.Suite("z.number");const numberSchema = z.number().int();
numberSuite .add("valid", () => { numberSchema.parse(1); }) .add("invalid type", () => { try { numberSchema.parse("bad"); } catch (e) {} }) .add("invalid number", () => { try { numberSchema.parse(0.5); } catch (e) {} }) .on("cycle", (e: Benchmark.Event) => { console.log(`z.number: ${e.target}`); });
const dateSuite = new Benchmark.Suite("z.date");
const plainDate = z.date();const minMaxDate = z .date() .min(new Date("2021-01-01")) .max(new Date("2030-01-01"));
dateSuite .add("valid", () => { plainDate.parse(new Date()); }) .add("invalid", () => { try { plainDate.parse(1); } catch (e) {} }) .add("valid min and max", () => { minMaxDate.parse(new Date("2023-01-01")); }) .add("invalid min", () => { try { minMaxDate.parse(new Date("2019-01-01")); } catch (e) {} }) .add("invalid max", () => { try { minMaxDate.parse(new Date("2031-01-01")); } catch (e) {} }) .on("cycle", (e: Benchmark.Event) => { console.log(`z.date: ${e.target}`); });
const symbolSuite = new Benchmark.Suite("z.symbol");const symbolSchema = z.symbol();
symbolSuite .add("valid", () => { symbolSchema.parse(val.symbol); }) .add("invalid", () => { try { symbolSchema.parse(1); } catch (e) {} }) .on("cycle", (e: Benchmark.Event) => { console.log(`z.symbol: ${e.target}`); });
export default { suites: [ enumSuite, longEnumSuite, undefinedSuite, literalSuite, numberSuite, dateSuite, symbolSuite, ],};