@theshelf/validation-driver-zod 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/Zod.d.ts +1 -1
- package/dist/Zod.js +28 -13
- package/package.json +2 -2
package/dist/Zod.d.ts
CHANGED
package/dist/Zod.js
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { ValidationResult, MAX_EMAIL_LENGTH, MAX_URL_LENGTH } from '@theshelf/validation';
|
|
2
|
+
import { ValidationResult, FieldTypes, MAX_EMAIL_LENGTH, MAX_URL_LENGTH } from '@theshelf/validation';
|
|
3
3
|
// Zod is so type heavy that we've chosen for inferred types to be used.
|
|
4
4
|
// This is a trade-off between readability and verbosity.
|
|
5
5
|
export default class Zod {
|
|
6
6
|
#validators = new Map();
|
|
7
7
|
constructor() {
|
|
8
|
-
this.#validators.set(
|
|
9
|
-
this.#validators.set(
|
|
10
|
-
this.#validators.set(
|
|
11
|
-
this.#validators.set(
|
|
12
|
-
this.#validators.set(
|
|
13
|
-
this.#validators.set(
|
|
14
|
-
this.#validators.set(
|
|
15
|
-
this.#validators.set(
|
|
16
|
-
this.#validators.set(
|
|
17
|
-
this.#validators.set(
|
|
8
|
+
this.#validators.set(FieldTypes.STRING, (constraints, required) => this.#validateString(constraints, required));
|
|
9
|
+
this.#validators.set(FieldTypes.NUMBER, (constraints, required) => this.#validateNumber(constraints, required));
|
|
10
|
+
this.#validators.set(FieldTypes.BOOLEAN, (constraints, required) => this.#validateBoolean(constraints, required));
|
|
11
|
+
this.#validators.set(FieldTypes.DATE, (constraints, required) => this.#validateDate(constraints, required));
|
|
12
|
+
this.#validators.set(FieldTypes.DATE_STRING, (constraints, required) => this.#validateDateString(constraints, required));
|
|
13
|
+
this.#validators.set(FieldTypes.DATE_TIME_STRING, (constraints, required) => this.#validateDateTimeString(constraints, required));
|
|
14
|
+
this.#validators.set(FieldTypes.TIME_STRING, (constraints, required) => this.#validateTimeString(constraints, required));
|
|
15
|
+
this.#validators.set(FieldTypes.UUID, (constraints, required) => this.#validateUuid(constraints, required));
|
|
16
|
+
this.#validators.set(FieldTypes.EMAIL, (constraints, required) => this.#validateEmail(constraints, required));
|
|
17
|
+
this.#validators.set(FieldTypes.ARRAY, (constraints, required) => this.#validateArray(constraints, required));
|
|
18
|
+
this.#validators.set(FieldTypes.URL, (constraints, required) => this.#validateUrl(constraints, required));
|
|
19
|
+
this.#validators.set(FieldTypes.URL_STRING, (constraints, required) => this.#validateUrlString(constraints, required));
|
|
20
|
+
this.#validators.set(FieldTypes.ENUM, (constraints, required) => this.#validateEnum(constraints, required));
|
|
18
21
|
}
|
|
19
22
|
get name() { return Zod.name; }
|
|
20
23
|
validate(data, schema) {
|
|
@@ -69,15 +72,23 @@ export default class Zod {
|
|
|
69
72
|
return this.#checkRequired(validation, required);
|
|
70
73
|
}
|
|
71
74
|
#validateDate(constraints, required) {
|
|
75
|
+
const validation = z.date();
|
|
76
|
+
return this.#checkRequired(validation, required);
|
|
77
|
+
}
|
|
78
|
+
#validateDateString(constraints, required) {
|
|
72
79
|
const validation = z.iso.date();
|
|
73
80
|
return this.#checkRequired(validation, required);
|
|
74
81
|
}
|
|
75
|
-
#
|
|
82
|
+
#validateDateTimeString(constraints, required) {
|
|
76
83
|
const validation = z.iso.datetime();
|
|
77
84
|
return this.#checkRequired(validation, required);
|
|
78
85
|
}
|
|
86
|
+
#validateTimeString(constraints, required) {
|
|
87
|
+
const validation = z.iso.time();
|
|
88
|
+
return this.#checkRequired(validation, required);
|
|
89
|
+
}
|
|
79
90
|
#validateUuid(constraints, required) {
|
|
80
|
-
const validation = z.uuid();
|
|
91
|
+
const validation = z.uuid(); // String or UUID object?
|
|
81
92
|
return this.#checkRequired(validation, required);
|
|
82
93
|
}
|
|
83
94
|
#validateEmail(constraints, required) {
|
|
@@ -94,6 +105,10 @@ export default class Zod {
|
|
|
94
105
|
return this.#checkRequired(validation, required);
|
|
95
106
|
}
|
|
96
107
|
#validateUrl(constraints, required) {
|
|
108
|
+
const validation = z.instanceof(URL);
|
|
109
|
+
return this.#checkRequired(validation, required);
|
|
110
|
+
}
|
|
111
|
+
#validateUrlString(constraints, required) {
|
|
97
112
|
let validation = z.url().max(MAX_URL_LENGTH);
|
|
98
113
|
if (constraints.protocols !== undefined) {
|
|
99
114
|
const escapedProtocols = constraints.protocols.map((p) => p.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'));
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theshelf/validation-driver-zod",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.6.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
|
7
7
|
"url": "git+https://github.com/MaskingTechnology/theshelf.git"
|
|
@@ -27,6 +27,6 @@
|
|
|
27
27
|
"zod": "^4.5.4"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"@theshelf/validation": "^0.
|
|
30
|
+
"@theshelf/validation": "^0.6.0"
|
|
31
31
|
}
|
|
32
32
|
}
|