Skip to content
68 changes: 38 additions & 30 deletions cases/zod4.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@ import * as z from 'zod4';
import { createCase } from '../benchmarks';

createCase('zod4', 'parseSafe', () => {
const dataType = z.interface({
const dataType = z.object({
number: z.number(),
negNumber: z.number(),
maxNumber: z.number(),
string: z.string(),
longString: z.string(),
boolean: z.boolean(),
deeplyNested: z.interface({
deeplyNested: z.object({
foo: z.string(),
num: z.number(),
bool: z.boolean(),
Expand All @@ -23,15 +23,15 @@ createCase('zod4', 'parseSafe', () => {

createCase('zod4', 'parseStrict', () => {
const dataType = z
.interface({
.object({
number: z.number(),
negNumber: z.number(),
maxNumber: z.number(),
string: z.string(),
longString: z.string(),
boolean: z.boolean(),
deeplyNested: z
.interface({
.object({
foo: z.string(),
num: z.number(),
bool: z.boolean(),
Expand All @@ -46,19 +46,23 @@ createCase('zod4', 'parseStrict', () => {
});

createCase('zod4', 'assertLoose', () => {
const dataType = z.looseInterface({
number: z.number(),
negNumber: z.number(),
maxNumber: z.number(),
string: z.string(),
longString: z.string(),
boolean: z.boolean(),
deeplyNested: z.looseInterface({
foo: z.string(),
num: z.number(),
bool: z.boolean(),
}),
});
const dataType = z
.object({
number: z.number(),
negNumber: z.number(),
maxNumber: z.number(),
string: z.string(),
longString: z.string(),
boolean: z.boolean(),
deeplyNested: z
.object({
foo: z.string(),
num: z.number(),
bool: z.boolean(),
})
.passthrough(),
})
.passthrough();

return data => {
dataType.parse(data);
Expand All @@ -68,19 +72,23 @@ createCase('zod4', 'assertLoose', () => {
});

createCase('zod4', 'assertStrict', () => {
const dataType = z.strictInterface({
number: z.number(),
negNumber: z.number(),
maxNumber: z.number(),
string: z.string(),
longString: z.string(),
boolean: z.boolean(),
deeplyNested: z.strictInterface({
foo: z.string(),
num: z.number(),
bool: z.boolean(),
}),
});
const dataType = z
.object({
number: z.number(),
negNumber: z.number(),
maxNumber: z.number(),
string: z.string(),
longString: z.string(),
boolean: z.boolean(),
deeplyNested: z
.object({
foo: z.string(),
num: z.number(),
bool: z.boolean(),
})
.strict(),
})
.strict();

return data => {
dataType.parse(data);
Expand Down
2 changes: 1 addition & 1 deletion docs/packagesPopularity.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
[{"name":"aeria","weeklyDownloads":58},{"name":"ajv","weeklyDownloads":92105737},{"name":"arktype","weeklyDownloads":208318},{"name":"banditypes","weeklyDownloads":99},{"name":"bueno","weeklyDownloads":44},{"name":"caketype","weeklyDownloads":37},{"name":"class-transformer-validator-sync","weeklyDownloads":3183981},{"name":"computed-types","weeklyDownloads":809},{"name":"decoders","weeklyDownloads":5954},{"name":"io-ts","weeklyDownloads":732966},{"name":"jointz","weeklyDownloads":44},{"name":"json-decoder","weeklyDownloads":64},{"name":"$mol_data","weeklyDownloads":92},{"name":"@mojotech/json-type-validation","weeklyDownloads":7661},{"name":"mondrian-framework","weeklyDownloads":53},{"name":"myzod","weeklyDownloads":8108},{"name":"ok-computer","weeklyDownloads":49},{"name":"parse-dont-validate (chained function)","weeklyDownloads":51},{"name":"parse-dont-validate (named parameters)","weeklyDownloads":51},{"name":"purify-ts","weeklyDownloads":24635},{"name":"r-assign","weeklyDownloads":40},{"name":"rescript-schema","weeklyDownloads":1308},{"name":"rulr","weeklyDownloads":330},{"name":"runtypes","weeklyDownloads":59839},{"name":"@sapphire/shapeshift","weeklyDownloads":272536},{"name":"simple-runtypes","weeklyDownloads":254},{"name":"@sinclair/typebox-(ahead-of-time)","weeklyDownloads":33592932},{"name":"@sinclair/typebox-(dynamic)","weeklyDownloads":33592932},{"name":"@sinclair/typebox-(just-in-time)","weeklyDownloads":33592932},{"name":"spectypes","weeklyDownloads":147},{"name":"succulent","weeklyDownloads":56},{"name":"superstruct","weeklyDownloads":1519710},{"name":"suretype","weeklyDownloads":23923},{"name":"sury","weeklyDownloads":6084},{"name":"tiny-schema-validator","weeklyDownloads":80},{"name":"to-typed","weeklyDownloads":46},{"name":"toi","weeklyDownloads":54},{"name":"ts-interface-checker","weeklyDownloads":11139260},{"name":"ts-json-validator","weeklyDownloads":5289},{"name":"ts-runtime-checks","weeklyDownloads":150},{"name":"ts-utils","weeklyDownloads":42},{"name":"tson","weeklyDownloads":43}]
[{"name":"aeria","weeklyDownloads":95},{"name":"ajv","weeklyDownloads":99135409},{"name":"arktype","weeklyDownloads":232264},{"name":"banditypes","weeklyDownloads":165},{"name":"bueno","weeklyDownloads":71},{"name":"caketype","weeklyDownloads":68},{"name":"class-transformer-validator-sync","weeklyDownloads":3142647},{"name":"computed-types","weeklyDownloads":826},{"name":"decoders","weeklyDownloads":6779},{"name":"io-ts","weeklyDownloads":771556},{"name":"jointz","weeklyDownloads":84},{"name":"json-decoder","weeklyDownloads":86},{"name":"$mol_data","weeklyDownloads":119},{"name":"@mojotech/json-type-validation","weeklyDownloads":8487},{"name":"mondrian-framework","weeklyDownloads":81},{"name":"myzod","weeklyDownloads":8052},{"name":"ok-computer","weeklyDownloads":72},{"name":"parse-dont-validate (chained function)","weeklyDownloads":93},{"name":"parse-dont-validate (named parameters)","weeklyDownloads":93},{"name":"purify-ts","weeklyDownloads":28388},{"name":"r-assign","weeklyDownloads":71},{"name":"rescript-schema","weeklyDownloads":1207},{"name":"rulr","weeklyDownloads":375},{"name":"runtypes","weeklyDownloads":70168},{"name":"@sapphire/shapeshift","weeklyDownloads":288191},{"name":"simple-runtypes","weeklyDownloads":275},{"name":"@sinclair/typebox-(ahead-of-time)","weeklyDownloads":35244531},{"name":"@sinclair/typebox-(dynamic)","weeklyDownloads":35244531},{"name":"@sinclair/typebox-(just-in-time)","weeklyDownloads":35244531},{"name":"spectypes","weeklyDownloads":140},{"name":"succulent","weeklyDownloads":102},{"name":"superstruct","weeklyDownloads":1566551},{"name":"suretype","weeklyDownloads":22097},{"name":"sury","weeklyDownloads":5939},{"name":"tiny-schema-validator","weeklyDownloads":102},{"name":"to-typed","weeklyDownloads":77},{"name":"toi","weeklyDownloads":83},{"name":"ts-interface-checker","weeklyDownloads":11364793},{"name":"ts-json-validator","weeklyDownloads":6453},{"name":"ts-runtime-checks","weeklyDownloads":185}]
2 changes: 1 addition & 1 deletion docs/results/bun-1.2.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/results/deno-2.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/results/node-20.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/results/node-21.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/results/node-22.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/results/node-23.json

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion docs/results/node-24.json

Large diffs are not rendered by default.

36 changes: 18 additions & 18 deletions docs/results/preview.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading