Skip to content

Commit 07815e3

Browse files
authored
Merge pull request #2176 from justrach/master
Add dhi validation library
2 parents 3bf7bad + 9295372 commit 07815e3

File tree

4 files changed

+125
-0
lines changed

4 files changed

+125
-0
lines changed

bun.lock

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
"computed-types": "1.11.2",
3636
"csv-stringify": "6.6.0",
3737
"decoders": "1.25.5",
38+
"dhi": "0.4.3",
3839
"fp-ts": "2.16.11",
3940
"io-ts": "2.2.22",
4041
"jet-schema": "1.4.3",
@@ -814,6 +815,8 @@
814815

815816
"delaunator": ["[email protected]", "", { "dependencies": { "robust-predicates": "^3.0.2" } }, "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw=="],
816817

818+
"dhi": ["[email protected]", "", { "peerDependencies": { "typescript": "^5" }, "optionalPeers": ["typescript"] }, "sha512-tzqyyV7XJj9CqMnkA1nX/hnEZc//HyY5ZsSQmQ4DpNRMF9ME70+igfknIy2WpEHZTuyr+PyHKElJpjCqWi6w6Q=="],
819+
817820
"diff": ["[email protected]", "", {}, "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A=="],
818821

819822
"dir-glob": ["[email protected]", "", { "dependencies": { "path-type": "^4.0.0" } }, "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA=="],

cases/dhi.ts

Lines changed: 97 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,97 @@
1+
// @ts-expect-error - dhi uses package.json exports which require moduleResolution: "bundler" or "node16"
2+
import { z } from 'dhi/schema';
3+
import { createCase } from '../benchmarks';
4+
5+
createCase('dhi', 'parseSafe', () => {
6+
const dataType = z.object({
7+
number: z.number(),
8+
negNumber: z.number(),
9+
maxNumber: z.number(),
10+
string: z.string(),
11+
longString: z.string(),
12+
boolean: z.boolean(),
13+
deeplyNested: z.object({
14+
foo: z.string(),
15+
num: z.number(),
16+
bool: z.boolean(),
17+
}),
18+
}); // Default behavior: strips unknown keys
19+
20+
return data => {
21+
return dataType.parse(data);
22+
};
23+
});
24+
25+
createCase('dhi', 'parseStrict', () => {
26+
const dataType = z
27+
.object({
28+
number: z.number(),
29+
negNumber: z.number(),
30+
maxNumber: z.number(),
31+
string: z.string(),
32+
longString: z.string(),
33+
boolean: z.boolean(),
34+
deeplyNested: z
35+
.object({
36+
foo: z.string(),
37+
num: z.number(),
38+
bool: z.boolean(),
39+
})
40+
.strict(), // Throw on unknown keys (nested)
41+
})
42+
.strict(); // Throw on unknown keys (root)
43+
44+
return data => {
45+
return dataType.parse(data);
46+
};
47+
});
48+
49+
createCase('dhi', 'assertLoose', () => {
50+
const dataType = z
51+
.object({
52+
number: z.number(),
53+
negNumber: z.number(),
54+
maxNumber: z.number(),
55+
string: z.string(),
56+
longString: z.string(),
57+
boolean: z.boolean(),
58+
deeplyNested: z
59+
.object({
60+
foo: z.string(),
61+
num: z.number(),
62+
bool: z.boolean(),
63+
})
64+
.passthrough(), // Allow unknown keys (nested)
65+
})
66+
.passthrough(); // Allow unknown keys (root)
67+
68+
return data => {
69+
dataType.parse(data);
70+
return true;
71+
};
72+
});
73+
74+
createCase('dhi', 'assertStrict', () => {
75+
const dataType = z
76+
.object({
77+
number: z.number(),
78+
negNumber: z.number(),
79+
maxNumber: z.number(),
80+
string: z.string(),
81+
longString: z.string(),
82+
boolean: z.boolean(),
83+
deeplyNested: z
84+
.object({
85+
foo: z.string(),
86+
num: z.number(),
87+
bool: z.boolean(),
88+
})
89+
.strict(), // Throw on unknown keys (nested)
90+
})
91+
.strict(); // Throw on unknown keys (root)
92+
93+
return data => {
94+
dataType.parse(data);
95+
return true;
96+
};
97+
});

package-lock.json

Lines changed: 24 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
"computed-types": "1.11.2",
6060
"csv-stringify": "6.6.0",
6161
"decoders": "1.25.5",
62+
"dhi": "0.4.3",
6263
"fp-ts": "2.16.11",
6364
"io-ts": "2.2.22",
6465
"jet-schema": "1.4.3",

0 commit comments

Comments
 (0)