@decaf-ts/as-zod 0.0.13 → 1.1.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/README.md +25 -3
- package/dist/as-zod.cjs +2 -173
- package/dist/as-zod.cjs.map +1 -0
- package/dist/as-zod.js +2 -0
- package/dist/as-zod.js.map +1 -0
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +2 -2
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/overrides.d.ts +1 -1
- package/lib/esm/overrides.js +16 -8
- package/lib/esm/overrides.js.map +1 -0
- package/lib/esm/zod.d.ts +11 -2
- package/lib/esm/zod.js +1 -1
- package/lib/esm/zod.js.map +1 -0
- package/lib/index.cjs +2 -2
- package/lib/index.d.ts +1 -1
- package/lib/index.js.map +1 -0
- package/lib/overrides.cjs +16 -8
- package/lib/overrides.d.ts +1 -1
- package/lib/overrides.js.map +1 -0
- package/lib/zod.cjs +1 -1
- package/lib/zod.d.ts +11 -2
- package/lib/zod.js.map +1 -0
- package/package.json +13 -27
- package/dist/as-zod.esm.cjs +0 -167
package/README.md
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+

|
|
2
2
|
|
|
3
3
|
## Decaf-ts as Zod module
|
|
4
4
|
|
|
5
5
|
Small addon to enable two-way convertion between Models and Zod
|
|
6
6
|
|
|
7
|
-
|
|
8
7
|

|
|
9
8
|

|
|
10
9
|

|
|
@@ -28,10 +27,15 @@ Small addon to enable two-way convertion between Models and Zod
|
|
|
28
27
|
|
|
29
28
|
Documentation available [here](https://decaf-ts.github.io/as-zod/)
|
|
30
29
|
|
|
30
|
+
Minimal size: 1.3 KB kb gzipped
|
|
31
|
+
|
|
32
|
+
|
|
31
33
|
### Description
|
|
32
34
|
|
|
33
35
|
Easy two-way conversion from Models to Zod
|
|
34
36
|
|
|
37
|
+
versions `^0.0.1` are for zod 3.x. `^1.0.0` for zod 4.x
|
|
38
|
+
|
|
35
39
|
### How to Use
|
|
36
40
|
|
|
37
41
|
- [Initial Setup](./workdocs/tutorials/For%20Developers.md#_initial-setup_)
|
|
@@ -40,6 +44,24 @@ Easy two-way conversion from Models to Zod
|
|
|
40
44
|
|
|
41
45
|
|
|
42
46
|
|
|
47
|
+
## Coding Principles
|
|
48
|
+
|
|
49
|
+
- group similar functionality in folders (analog to namespaces but without any namespace declaration)
|
|
50
|
+
- one class per file;
|
|
51
|
+
- one interface per file (unless interface is just used as a type);
|
|
52
|
+
- group types as other interfaces in a types.ts file per folder;
|
|
53
|
+
- group constants or enums in a constants.ts file per folder;
|
|
54
|
+
- group decorators in a decorators.ts file per folder;
|
|
55
|
+
- always import from the specific file, never from a folder or index file (exceptions for dependencies on other packages);
|
|
56
|
+
- prefer the usage of established design patters where applicable:
|
|
57
|
+
- Singleton (can be an anti-pattern. use with care);
|
|
58
|
+
- factory;
|
|
59
|
+
- observer;
|
|
60
|
+
- strategy;
|
|
61
|
+
- builder;
|
|
62
|
+
- etc;
|
|
63
|
+
|
|
64
|
+
|
|
43
65
|
### Related
|
|
44
66
|
|
|
45
67
|
[](https://github.com/decaf-ts/decorator-validation)
|
|
@@ -81,4 +103,4 @@ So if you can, if this project in any way. either by learning something or simpl
|
|
|
81
103
|
|
|
82
104
|
This project is released under the [MIT License](./LICENSE.md).
|
|
83
105
|
|
|
84
|
-
By developers, for developers...
|
|
106
|
+
By developers, for developers...
|
package/dist/as-zod.cjs
CHANGED
|
@@ -1,173 +1,2 @@
|
|
|
1
|
-
(function (
|
|
2
|
-
|
|
3
|
-
typeof define === 'function' && define.amd ? define(['exports', '@decaf-ts/decoration', '@decaf-ts/decorator-validation', 'zod', '@decaf-ts/reflection'], factory) :
|
|
4
|
-
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global["as-zod"] = {}, global.decoration, global.decoratorValidation, global.zod, global.reflection));
|
|
5
|
-
})(this, (function (exports, decoration, decoratorValidation, zod, reflection) { 'use strict';
|
|
6
|
-
|
|
7
|
-
const ReservedKeys = [
|
|
8
|
-
decoratorValidation.ValidationKeys.REQUIRED,
|
|
9
|
-
decoratorValidation.ValidationKeys.TYPE,
|
|
10
|
-
decoratorValidation.ModelKeys.TYPE,
|
|
11
|
-
];
|
|
12
|
-
function isReservedKey(el) {
|
|
13
|
-
return ReservedKeys.includes(el);
|
|
14
|
-
}
|
|
15
|
-
function zodify(type, zz = zod.ZodAny) {
|
|
16
|
-
type = typeof type === "string" ? [type] : type;
|
|
17
|
-
function innerZodify(type) {
|
|
18
|
-
switch (type.toLowerCase()) {
|
|
19
|
-
case decoratorValidation.Primitives.STRING:
|
|
20
|
-
return zod.z.string();
|
|
21
|
-
case decoratorValidation.Primitives.NUMBER:
|
|
22
|
-
return zod.z.number();
|
|
23
|
-
case decoratorValidation.Primitives.BIGINT:
|
|
24
|
-
return zod.z.bigint();
|
|
25
|
-
case decoratorValidation.Primitives.BOOLEAN:
|
|
26
|
-
return zod.z.boolean();
|
|
27
|
-
case decoratorValidation.ValidationKeys.DATE:
|
|
28
|
-
return zod.z.date();
|
|
29
|
-
case Array.name.toLowerCase():
|
|
30
|
-
return zod.z.array(zz);
|
|
31
|
-
case Set.name.toLowerCase():
|
|
32
|
-
return zod.z.set(zz);
|
|
33
|
-
default: {
|
|
34
|
-
const m = decoratorValidation.Model.get(type);
|
|
35
|
-
if (!m) {
|
|
36
|
-
throw new Error(`Unzodifiable type: ${type}`);
|
|
37
|
-
}
|
|
38
|
-
try {
|
|
39
|
-
const zz = zod.z.from(m);
|
|
40
|
-
return zz;
|
|
41
|
-
}
|
|
42
|
-
catch (e) {
|
|
43
|
-
throw new Error(`Failed to zodify model ${type}: ${e}`);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
let zod$1;
|
|
49
|
-
for (const t of type) {
|
|
50
|
-
zod$1 = zod$1 ? zod$1.or(innerZodify(t)) : innerZodify(t);
|
|
51
|
-
}
|
|
52
|
-
return zod$1;
|
|
53
|
-
}
|
|
54
|
-
function zodifyValidation(zod, type, values) {
|
|
55
|
-
switch (type) {
|
|
56
|
-
case decoratorValidation.ValidationKeys.MIN:
|
|
57
|
-
return zod.min(values[decoratorValidation.ValidationKeys.MIN]);
|
|
58
|
-
case decoratorValidation.ValidationKeys.MIN_LENGTH:
|
|
59
|
-
return zod.min(values[decoratorValidation.ValidationKeys.MIN_LENGTH]);
|
|
60
|
-
case decoratorValidation.ValidationKeys.MAX:
|
|
61
|
-
return zod.max(values[decoratorValidation.ValidationKeys.MAX]);
|
|
62
|
-
case decoratorValidation.ValidationKeys.MAX_LENGTH:
|
|
63
|
-
return zod.max(values[decoratorValidation.ValidationKeys.MAX_LENGTH]);
|
|
64
|
-
case decoratorValidation.ValidationKeys.STEP:
|
|
65
|
-
return zod.multipleOf(values[decoratorValidation.ValidationKeys.STEP]);
|
|
66
|
-
case decoratorValidation.ValidationKeys.PATTERN:
|
|
67
|
-
case decoratorValidation.ValidationKeys.URL:
|
|
68
|
-
case decoratorValidation.ValidationKeys.EMAIL:
|
|
69
|
-
case decoratorValidation.ValidationKeys.PASSWORD:
|
|
70
|
-
return zod.regex(new RegExp(values[decoratorValidation.ValidationKeys.PATTERN], "g"));
|
|
71
|
-
case decoratorValidation.ValidationKeys.DATE:
|
|
72
|
-
return zod.date();
|
|
73
|
-
default:
|
|
74
|
-
return zod;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
function modelToZod(model) {
|
|
78
|
-
const result = {};
|
|
79
|
-
const properties = decoratorValidation.Model.getAttributes(model);
|
|
80
|
-
if (Array.isArray(properties) && !properties.length)
|
|
81
|
-
return zod.z.object({});
|
|
82
|
-
for (const prop of properties) {
|
|
83
|
-
if (typeof model[prop] === "function" ||
|
|
84
|
-
prop.startsWith("_") ||
|
|
85
|
-
prop === "constructor") {
|
|
86
|
-
continue;
|
|
87
|
-
}
|
|
88
|
-
const allDecs = reflection.Reflection.getPropertyDecorators(decoratorValidation.ValidationKeys.REFLECT, model, prop, false, true);
|
|
89
|
-
const decoratorData = allDecs.decorators.reduce((accum, el) => {
|
|
90
|
-
const { key, props } = el;
|
|
91
|
-
if (key === decoratorValidation.ModelKeys.TYPE && !accum[decoratorValidation.ValidationKeys.TYPE]) {
|
|
92
|
-
accum[decoratorValidation.ValidationKeys.TYPE] = {
|
|
93
|
-
customTypes: [props.name],
|
|
94
|
-
message: decoratorValidation.DEFAULT_ERROR_MESSAGES.TYPE,
|
|
95
|
-
description: "defines the accepted types for the attribute",
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
accum[key] = props;
|
|
100
|
-
}
|
|
101
|
-
return accum;
|
|
102
|
-
}, {});
|
|
103
|
-
if (!Object.keys(decoratorData).length) {
|
|
104
|
-
continue;
|
|
105
|
-
}
|
|
106
|
-
let zod$1 = zod.ZodAny;
|
|
107
|
-
const typeData = decoratorData[decoratorValidation.ValidationKeys.TYPE];
|
|
108
|
-
if (!typeData) {
|
|
109
|
-
throw new Error(`Missing type information`);
|
|
110
|
-
}
|
|
111
|
-
zod$1 = zodify((Array.isArray(typeData.customTypes)
|
|
112
|
-
? typeData.customTypes
|
|
113
|
-
: [typeData.customTypes]).map((c) => {
|
|
114
|
-
if (typeof c === "function")
|
|
115
|
-
return c();
|
|
116
|
-
return c;
|
|
117
|
-
}), decoratorData[decoratorValidation.ValidationKeys.LIST]
|
|
118
|
-
? zodify((Array.isArray(decoratorData[decoratorValidation.ValidationKeys.LIST].clazz)
|
|
119
|
-
? decoratorData[decoratorValidation.ValidationKeys.LIST].clazz
|
|
120
|
-
: [decoratorData[decoratorValidation.ValidationKeys.LIST].clazz]).map((c) => {
|
|
121
|
-
if (typeof c === "function") {
|
|
122
|
-
return c().name;
|
|
123
|
-
}
|
|
124
|
-
return c;
|
|
125
|
-
}))
|
|
126
|
-
: zod.ZodAny);
|
|
127
|
-
for (const [key, props] of Object.entries(decoratorData).filter(([k]) => !isReservedKey(k))) {
|
|
128
|
-
zod$1 = zodifyValidation(zod$1, key, props);
|
|
129
|
-
}
|
|
130
|
-
if (!decoratorData[decoratorValidation.ValidationKeys.REQUIRED]) {
|
|
131
|
-
zod$1 = zod$1.optional();
|
|
132
|
-
}
|
|
133
|
-
const description = decoration.Metadata.description(model.constructor, prop);
|
|
134
|
-
if (description) {
|
|
135
|
-
zod$1 = zod$1.describe(description);
|
|
136
|
-
}
|
|
137
|
-
result[prop] = zod$1;
|
|
138
|
-
}
|
|
139
|
-
const description = decoration.Metadata.description(model.constructor);
|
|
140
|
-
const res = zod.z.object(result);
|
|
141
|
-
if (description) {
|
|
142
|
-
res.describe(description);
|
|
143
|
-
}
|
|
144
|
-
return res;
|
|
145
|
-
}
|
|
146
|
-
const descriptor = Object.getOwnPropertyDescriptor(zod.z, "from");
|
|
147
|
-
if (!descriptor || descriptor.configurable) {
|
|
148
|
-
Object.defineProperty(zod.z, "from", {
|
|
149
|
-
value: (model) => {
|
|
150
|
-
const m = new model();
|
|
151
|
-
if (!decoration.Metadata.constr(m.constructor))
|
|
152
|
-
decoratorValidation.Model.fromModel(m, {});
|
|
153
|
-
return modelToZod(m);
|
|
154
|
-
},
|
|
155
|
-
});
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* @description Current version of the reflection package
|
|
160
|
-
* @summary Stores the semantic version number of the package
|
|
161
|
-
* @const VERSION
|
|
162
|
-
* @memberOf module:as-zod
|
|
163
|
-
*/
|
|
164
|
-
const VERSION = "0.0.13";
|
|
165
|
-
decoration.Metadata.registerLibrary("@decaf-ts/as-zod", VERSION);
|
|
166
|
-
|
|
167
|
-
exports.VERSION = VERSION;
|
|
168
|
-
exports.modelToZod = modelToZod;
|
|
169
|
-
exports.zodify = zodify;
|
|
170
|
-
exports.zodifyValidation = zodifyValidation;
|
|
171
|
-
|
|
172
|
-
}));
|
|
173
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXMtem9kLmNqcyIsInNvdXJjZXMiOlsiLi4vc3JjL292ZXJyaWRlcy50cyIsIi4uL3NyYy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBNb2RlbCxcbiAgTW9kZWxLZXlzLFxuICBUeXBlTWV0YWRhdGEsXG4gIFByaW1pdGl2ZXMsXG4gIERFRkFVTFRfRVJST1JfTUVTU0FHRVMsXG4gIFZhbGlkYXRvck9wdGlvbnMsXG4gIE1pbkxlbmd0aFZhbGlkYXRvck9wdGlvbnMsXG4gIE1pblZhbGlkYXRvck9wdGlvbnMsXG4gIE1heFZhbGlkYXRvck9wdGlvbnMsXG4gIE1heExlbmd0aFZhbGlkYXRvck9wdGlvbnMsXG4gIFN0ZXBWYWxpZGF0b3JPcHRpb25zLFxuICBQYXR0ZXJuVmFsaWRhdG9yT3B0aW9ucyxcbiAgTGlzdE1ldGFkYXRhLFxuICBDb25zdHJ1Y3Rvcixcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgTWV0YWRhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcbmltcG9ydCB7IHosIFpvZEFueSB9IGZyb20gXCJ6b2RcIjtcbmltcG9ydCB7IFJlZmxlY3Rpb24gfSBmcm9tIFwiQGRlY2FmLXRzL3JlZmxlY3Rpb25cIjtcbmltcG9ydCB7IFZhbGlkYXRpb25LZXlzIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuXG5jb25zdCBSZXNlcnZlZEtleXMgPSBbXG4gIFZhbGlkYXRpb25LZXlzLlJFUVVJUkVELFxuICBWYWxpZGF0aW9uS2V5cy5UWVBFLFxuICBNb2RlbEtleXMuVFlQRSxcbl0gYXMgY29uc3Q7XG5cbmZ1bmN0aW9uIGlzUmVzZXJ2ZWRLZXkoZWw6IHN0cmluZykge1xuICByZXR1cm4gUmVzZXJ2ZWRLZXlzLmluY2x1ZGVzKGVsIGFzIGFueSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB6b2RpZnkodHlwZTogc3RyaW5nIHwgc3RyaW5nW10sIHp6OiBhbnkgPSBab2RBbnkpIHtcbiAgdHlwZSA9IHR5cGVvZiB0eXBlID09PSBcInN0cmluZ1wiID8gW3R5cGVdIDogdHlwZTtcblxuICBmdW5jdGlvbiBpbm5lclpvZGlmeSh0eXBlOiBzdHJpbmcpIHtcbiAgICBzd2l0Y2ggKHR5cGUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgY2FzZSBQcmltaXRpdmVzLlNUUklORzpcbiAgICAgICAgcmV0dXJuIHouc3RyaW5nKCk7XG4gICAgICBjYXNlIFByaW1pdGl2ZXMuTlVNQkVSOlxuICAgICAgICByZXR1cm4gei5udW1iZXIoKTtcbiAgICAgIGNhc2UgUHJpbWl0aXZlcy5CSUdJTlQ6XG4gICAgICAgIHJldHVybiB6LmJpZ2ludCgpO1xuICAgICAgY2FzZSBQcmltaXRpdmVzLkJPT0xFQU46XG4gICAgICAgIHJldHVybiB6LmJvb2xlYW4oKTtcbiAgICAgIGNhc2UgVmFsaWRhdGlvbktleXMuREFURTpcbiAgICAgICAgcmV0dXJuIHouZGF0ZSgpO1xuICAgICAgY2FzZSBBcnJheS5uYW1lLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiB6LmFycmF5KHp6KTtcbiAgICAgIGNhc2UgU2V0Lm5hbWUudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIHouc2V0KHp6KTtcbiAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgY29uc3QgbSA9IE1vZGVsLmdldCh0eXBlKTtcbiAgICAgICAgaWYgKCFtKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbnpvZGlmaWFibGUgdHlwZTogJHt0eXBlfWApO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgenogPSB6LmZyb20obSk7XG4gICAgICAgICAgcmV0dXJuIHp6O1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gem9kaWZ5IG1vZGVsICR7dHlwZX06ICR7ZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxldCB6b2Q6IGFueTtcbiAgZm9yIChjb25zdCB0IG9mIHR5cGUpIHtcbiAgICB6b2QgPSB6b2QgPyB6b2Qub3IoaW5uZXJab2RpZnkodCkpIDogaW5uZXJab2RpZnkodCk7XG4gIH1cblxuICByZXR1cm4gem9kO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gem9kaWZ5VmFsaWRhdGlvbihcbiAgem9kOiBhbnksXG4gIHR5cGU6IHN0cmluZyxcbiAgdmFsdWVzOiBWYWxpZGF0b3JPcHRpb25zXG4pIHtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5NSU46XG4gICAgICByZXR1cm4gem9kLm1pbigodmFsdWVzIGFzIE1pblZhbGlkYXRvck9wdGlvbnMpW1ZhbGlkYXRpb25LZXlzLk1JTl0pO1xuICAgIGNhc2UgVmFsaWRhdGlvbktleXMuTUlOX0xFTkdUSDpcbiAgICAgIHJldHVybiB6b2QubWluKFxuICAgICAgICAodmFsdWVzIGFzIE1pbkxlbmd0aFZhbGlkYXRvck9wdGlvbnMpW1ZhbGlkYXRpb25LZXlzLk1JTl9MRU5HVEhdXG4gICAgICApO1xuICAgIGNhc2UgVmFsaWRhdGlvbktleXMuTUFYOlxuICAgICAgcmV0dXJuIHpvZC5tYXgoKHZhbHVlcyBhcyBNYXhWYWxpZGF0b3JPcHRpb25zKVtWYWxpZGF0aW9uS2V5cy5NQVhdKTtcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLk1BWF9MRU5HVEg6XG4gICAgICByZXR1cm4gem9kLm1heChcbiAgICAgICAgKHZhbHVlcyBhcyBNYXhMZW5ndGhWYWxpZGF0b3JPcHRpb25zKVtWYWxpZGF0aW9uS2V5cy5NQVhfTEVOR1RIXVxuICAgICAgKTtcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLlNURVA6XG4gICAgICByZXR1cm4gem9kLm11bHRpcGxlT2YoXG4gICAgICAgICh2YWx1ZXMgYXMgU3RlcFZhbGlkYXRvck9wdGlvbnMpW1ZhbGlkYXRpb25LZXlzLlNURVBdXG4gICAgICApO1xuICAgIGNhc2UgVmFsaWRhdGlvbktleXMuUEFUVEVSTjpcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLlVSTDpcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLkVNQUlMOlxuICAgIGNhc2UgVmFsaWRhdGlvbktleXMuUEFTU1dPUkQ6XG4gICAgICByZXR1cm4gem9kLnJlZ2V4KFxuICAgICAgICBuZXcgUmVnRXhwKFxuICAgICAgICAgICh2YWx1ZXMgYXMgUGF0dGVyblZhbGlkYXRvck9wdGlvbnMpW1ZhbGlkYXRpb25LZXlzLlBBVFRFUk5dIGFzIHN0cmluZyxcbiAgICAgICAgICBcImdcIlxuICAgICAgICApXG4gICAgICApO1xuICAgIGNhc2UgVmFsaWRhdGlvbktleXMuREFURTpcbiAgICAgIHJldHVybiB6b2QuZGF0ZSgpO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gem9kO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbFRvWm9kPE0gZXh0ZW5kcyBNb2RlbD4obW9kZWw6IE0pIHtcbiAgY29uc3QgcmVzdWx0OiB7IFtrZXk6IHN0cmluZ106IGFueSB9ID0ge307XG5cbiAgY29uc3QgcHJvcGVydGllcyA9IE1vZGVsLmdldEF0dHJpYnV0ZXMobW9kZWwpO1xuICBpZiAoQXJyYXkuaXNBcnJheShwcm9wZXJ0aWVzKSAmJiAhcHJvcGVydGllcy5sZW5ndGgpIHJldHVybiB6Lm9iamVjdCh7fSk7XG4gIGZvciAoY29uc3QgcHJvcCBvZiBwcm9wZXJ0aWVzKSB7XG4gICAgaWYgKFxuICAgICAgdHlwZW9mIChtb2RlbCBhcyBhbnkpW3Byb3BdID09PSBcImZ1bmN0aW9uXCIgfHxcbiAgICAgIHByb3Auc3RhcnRzV2l0aChcIl9cIikgfHxcbiAgICAgIHByb3AgPT09IFwiY29uc3RydWN0b3JcIlxuICAgICkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgY29uc3QgYWxsRGVjcyA9IFJlZmxlY3Rpb24uZ2V0UHJvcGVydHlEZWNvcmF0b3JzKFxuICAgICAgVmFsaWRhdGlvbktleXMuUkVGTEVDVCxcbiAgICAgIG1vZGVsLFxuICAgICAgcHJvcCxcbiAgICAgIGZhbHNlLFxuICAgICAgdHJ1ZVxuICAgICk7XG5cbiAgICBjb25zdCBkZWNvcmF0b3JEYXRhID0gYWxsRGVjcy5kZWNvcmF0b3JzLnJlZHVjZShcbiAgICAgIChhY2N1bTogUmVjb3JkPHN0cmluZywgYW55PiwgZWwpID0+IHtcbiAgICAgICAgY29uc3QgeyBrZXksIHByb3BzIH0gPSBlbDtcbiAgICAgICAgaWYgKGtleSA9PT0gTW9kZWxLZXlzLlRZUEUgJiYgIWFjY3VtW1ZhbGlkYXRpb25LZXlzLlRZUEVdKSB7XG4gICAgICAgICAgYWNjdW1bVmFsaWRhdGlvbktleXMuVFlQRV0gPSB7XG4gICAgICAgICAgICBjdXN0b21UeXBlczogW3Byb3BzLm5hbWUgYXMgc3RyaW5nXSxcbiAgICAgICAgICAgIG1lc3NhZ2U6IERFRkFVTFRfRVJST1JfTUVTU0FHRVMuVFlQRSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcImRlZmluZXMgdGhlIGFjY2VwdGVkIHR5cGVzIGZvciB0aGUgYXR0cmlidXRlXCIsXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhY2N1bVtrZXldID0gcHJvcHM7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcblxuICAgIGlmICghT2JqZWN0LmtleXMoZGVjb3JhdG9yRGF0YSkubGVuZ3RoKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBsZXQgem9kOiBhbnkgPSBab2RBbnk7XG5cbiAgICBjb25zdCB0eXBlRGF0YTogVHlwZU1ldGFkYXRhID0gZGVjb3JhdG9yRGF0YVtcbiAgICAgIFZhbGlkYXRpb25LZXlzLlRZUEVcbiAgICBdIGFzIFR5cGVNZXRhZGF0YTtcblxuICAgIGlmICghdHlwZURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTWlzc2luZyB0eXBlIGluZm9ybWF0aW9uYCk7XG4gICAgfVxuXG4gICAgem9kID0gem9kaWZ5KFxuICAgICAgKEFycmF5LmlzQXJyYXkodHlwZURhdGEuY3VzdG9tVHlwZXMpXG4gICAgICAgID8gdHlwZURhdGEuY3VzdG9tVHlwZXNcbiAgICAgICAgOiBbdHlwZURhdGEuY3VzdG9tVHlwZXNdXG4gICAgICApLm1hcCgoYykgPT4ge1xuICAgICAgICBpZiAodHlwZW9mIGMgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIGMoKTtcbiAgICAgICAgcmV0dXJuIGM7XG4gICAgICB9KSxcbiAgICAgIGRlY29yYXRvckRhdGFbVmFsaWRhdGlvbktleXMuTElTVF1cbiAgICAgICAgPyB6b2RpZnkoXG4gICAgICAgICAgICAoQXJyYXkuaXNBcnJheShcbiAgICAgICAgICAgICAgKGRlY29yYXRvckRhdGFbVmFsaWRhdGlvbktleXMuTElTVF0gYXMgTGlzdE1ldGFkYXRhKS5jbGF6elxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA/IChkZWNvcmF0b3JEYXRhW1ZhbGlkYXRpb25LZXlzLkxJU1RdIGFzIExpc3RNZXRhZGF0YSkuY2xhenpcbiAgICAgICAgICAgICAgOiBbKGRlY29yYXRvckRhdGFbVmFsaWRhdGlvbktleXMuTElTVF0gYXMgTGlzdE1ldGFkYXRhKS5jbGF6el1cbiAgICAgICAgICAgICkubWFwKChjKSA9PiB7XG4gICAgICAgICAgICAgIGlmICh0eXBlb2YgYyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGMoKS5uYW1lO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHJldHVybiBjIGFzIHN0cmluZztcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKVxuICAgICAgICA6IFpvZEFueVxuICAgICk7XG5cbiAgICBmb3IgKGNvbnN0IFtrZXksIHByb3BzXSBvZiBPYmplY3QuZW50cmllcyhkZWNvcmF0b3JEYXRhKS5maWx0ZXIoXG4gICAgICAoW2tdKSA9PiAhaXNSZXNlcnZlZEtleShrKVxuICAgICkpIHtcbiAgICAgIHpvZCA9IHpvZGlmeVZhbGlkYXRpb24oem9kLCBrZXksIHByb3BzKTtcbiAgICB9XG5cbiAgICBpZiAoIWRlY29yYXRvckRhdGFbVmFsaWRhdGlvbktleXMuUkVRVUlSRURdKSB7XG4gICAgICB6b2QgPSB6b2Qub3B0aW9uYWwoKTtcbiAgICB9XG5cbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IE1ldGFkYXRhLmRlc2NyaXB0aW9uKFxuICAgICAgbW9kZWwuY29uc3RydWN0b3IgYXMgYW55LFxuICAgICAgcHJvcCBhcyBhbnlcbiAgICApO1xuXG4gICAgaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgICB6b2QgPSB6b2QuZGVzY3JpYmUoZGVzY3JpcHRpb24pO1xuICAgIH1cblxuICAgIHJlc3VsdFtwcm9wXSA9IHpvZDtcbiAgfVxuXG4gIGNvbnN0IGRlc2NyaXB0aW9uID0gTWV0YWRhdGEuZGVzY3JpcHRpb24obW9kZWwuY29uc3RydWN0b3IgYXMgYW55KTtcbiAgY29uc3QgcmVzID0gei5vYmplY3QocmVzdWx0KTtcbiAgaWYgKGRlc2NyaXB0aW9uKSB7XG4gICAgcmVzLmRlc2NyaWJlKGRlc2NyaXB0aW9uKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufVxuXG5jb25zdCBkZXNjcmlwdG9yID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih6LCBcImZyb21cIiBhcyBrZXlvZiB0eXBlb2Ygeik7XG5cbmlmICghZGVzY3JpcHRvciB8fCBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSkge1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoeiwgXCJmcm9tXCIsIHtcbiAgICB2YWx1ZTogPE0gZXh0ZW5kcyBNb2RlbD4obW9kZWw6IENvbnN0cnVjdG9yPE0+KSA9PiB7XG4gICAgICBjb25zdCBtID0gbmV3IG1vZGVsKCk7XG4gICAgICBpZiAoIU1ldGFkYXRhLmNvbnN0cihtLmNvbnN0cnVjdG9yIGFzIGFueSkpIE1vZGVsLmZyb21Nb2RlbChtLCB7fSk7XG4gICAgICByZXR1cm4gbW9kZWxUb1pvZChtKSBhcyBhbnk7XG4gICAgfSxcbiAgfSk7XG59XG4iLCJpbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuXG5leHBvcnQgKiBmcm9tIFwiLi96b2RcIjtcbmV4cG9ydCAqIGZyb20gXCIuL292ZXJyaWRlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBDdXJyZW50IHZlcnNpb24gb2YgdGhlIHJlZmxlY3Rpb24gcGFja2FnZVxuICogQHN1bW1hcnkgU3RvcmVzIHRoZSBzZW1hbnRpYyB2ZXJzaW9uIG51bWJlciBvZiB0aGUgcGFja2FnZVxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6YXMtem9kXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIjI1ZFUlNJT04jI1wiO1xuXG5NZXRhZGF0YS5yZWdpc3RlckxpYnJhcnkoXCJAZGVjYWYtdHMvYXMtem9kXCIsIFZFUlNJT04pO1xuIl0sIm5hbWVzIjpbIlZhbGlkYXRpb25LZXlzIiwiTW9kZWxLZXlzIiwiWm9kQW55IiwiUHJpbWl0aXZlcyIsInoiLCJNb2RlbCIsInpvZCIsIlJlZmxlY3Rpb24iLCJERUZBVUxUX0VSUk9SX01FU1NBR0VTIiwiTWV0YWRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7OztJQXFCQSxNQUFNLFlBQVksR0FBRztJQUNuQixJQUFBQSxrQ0FBYyxDQUFDLFFBQVE7SUFDdkIsSUFBQUEsa0NBQWMsQ0FBQyxJQUFJO0lBQ25CLElBQUFDLDZCQUFTLENBQUMsSUFBSTtLQUNOO0lBRVYsU0FBUyxhQUFhLENBQUMsRUFBVSxFQUFBO0lBQy9CLElBQUEsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQVMsQ0FBQztJQUN6QzthQUVnQixNQUFNLENBQUMsSUFBdUIsRUFBRSxLQUFVQyxVQUFNLEVBQUE7SUFDOUQsSUFBQSxJQUFJLEdBQUcsT0FBTyxJQUFJLEtBQUssUUFBUSxHQUFHLENB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
|
|
1
|
+
var e,t;e=this,t=(e,t,o,a,r)=>{"use strict";const i=[o.ValidationKeys.REQUIRED,o.ValidationKeys.TYPE,o.ValidationKeys.DATE,o.ModelKeys.TYPE];function n(e,t=a.ZodAny){function r(e){switch(e.toLowerCase()){case o.Primitives.STRING:return a.z.string();case o.Primitives.NUMBER:return a.z.number();case o.Primitives.BIGINT:return a.z.bigint();case o.Primitives.BOOLEAN:return a.z.boolean();case o.ValidationKeys.DATE:return a.z.date();case Array.name.toLowerCase():return a.z.array(t);case Set.name.toLowerCase():{const e=a.z.set(t);return void 0===e.valueSchema&&Object.defineProperty(e,"valueSchema",{get:()=>e._def?.valueType,enumerable:!1,configurable:!0}),e}default:{const t=o.Model.get(e);if(!t)throw Error("Unzodifiable type: "+e);try{return a.z.from(t)}catch(t){throw Error(`Failed to zodify model ${e}: ${t}`)}}}}let i;e="string"==typeof e?[e]:e;for(const t of e)i=i?i.or(r(t)):r(t);return i}function s(e,t,a){switch(t){case o.ValidationKeys.MIN:return e.min(a[o.ValidationKeys.MIN]);case o.ValidationKeys.MIN_LENGTH:return e.min(a[o.ValidationKeys.MIN_LENGTH]);case o.ValidationKeys.MAX:return e.max(a[o.ValidationKeys.MAX]);case o.ValidationKeys.MAX_LENGTH:return e.max(a[o.ValidationKeys.MAX_LENGTH]);case o.ValidationKeys.STEP:return e.multipleOf(a[o.ValidationKeys.STEP]);case o.ValidationKeys.PATTERN:case o.ValidationKeys.URL:case o.ValidationKeys.EMAIL:case o.ValidationKeys.PASSWORD:return e.regex(RegExp(a[o.ValidationKeys.PATTERN],"g"));case o.ValidationKeys.DATE:throw new TypeError("DATE validator cannot be applied as a refinement");default:return e}}function c(e){const c={},d=o.Model.getAttributes(e);if(Array.isArray(d)&&!d.length)return a.z.object({});for(const l of d){if("function"==typeof e[l]||l.startsWith("_")||"constructor"===l)continue;const d=r.Reflection.getPropertyDecorators(o.ValidationKeys.REFLECT,e,l,!1,!0).decorators.reduce((e,t)=>{const{key:a,props:r}=t;return a!==o.ModelKeys.TYPE||e[o.ValidationKeys.TYPE]?e[a]=r:e[o.ValidationKeys.TYPE]={customTypes:[r.name],message:o.DEFAULT_ERROR_MESSAGES.TYPE,description:"defines the accepted types for the attribute"},e},{});if(!Object.keys(d).length)continue;let y=a.ZodAny;const f=d[o.ValidationKeys.TYPE];if(!f)throw Error("Missing type information");y=n((Array.isArray(f.customTypes)?f.customTypes:[f.customTypes]).map(e=>"function"==typeof e?e():e),d[o.ValidationKeys.LIST]?n((Array.isArray(d[o.ValidationKeys.LIST].clazz)?d[o.ValidationKeys.LIST].clazz:[d[o.ValidationKeys.LIST].clazz]).map(e=>"function"==typeof e?e().name:e)):a.ZodAny);for(const[e,t]of Object.entries(d).filter(([e])=>{return t=e,!i.includes(t);var t}))y=s(y,e,t);d[o.ValidationKeys.REQUIRED]||(y=y.optional());const u=t.Metadata.description(e.constructor,l);u&&(y=y.describe(u)),c[l]=y}const l=t.Metadata.description(e.constructor),y=a.z.object(c);return l?y.describe(l):y}const d=Object.getOwnPropertyDescriptor(a.z,"from");d&&!d.configurable||Object.defineProperty(a.z,"from",{value:e=>{const a=new e;return t.Metadata.constr(a.constructor)||o.Model.fromModel(a,{}),c(a)}});const l="##VERSION##";t.Metadata.registerLibrary("@decaf-ts/as-zod",l),e.VERSION=l,e.modelToZod=c,e.zodify=n,e.zodifyValidation=s},"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("@decaf-ts/decoration"),require("@decaf-ts/decorator-validation"),require("zod"),require("@decaf-ts/reflection")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/decorator-validation","zod","@decaf-ts/reflection"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self)["as-zod"]={},e.decafTsDecoration,e.decafTsDecoratorValidation,e.zod,e.decafTsReflection);
|
|
2
|
+
//# sourceMappingURL=as-zod.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"as-zod.cjs","sources":["../src/overrides.ts","../src/index.ts"],"sourcesContent":[null,null],"names":["ReservedKeys","ValidationKeys","REQUIRED","TYPE","DATE","ModelKeys","zodify","type","zz","ZodAny","innerZodify","toLowerCase","Primitives","STRING","z","string","NUMBER","number","BIGINT","bigint","BOOLEAN","boolean","date","Array","name","array","Set","setSchema","set","valueSchema","Object","defineProperty","get","_def","valueType","enumerable","configurable","m","Model","Error","from","e","zod","t","or","zodifyValidation","values","MIN","min","MIN_LENGTH","MAX","max","MAX_LENGTH","STEP","multipleOf","PATTERN","URL","EMAIL","PASSWORD","regex","RegExp","TypeError","modelToZod","model","result","properties","getAttributes","isArray","length","object","prop","startsWith","decoratorData","Reflection","getPropertyDecorators","REFLECT","decorators","reduce","accum","el","key","props","customTypes","message","DEFAULT_ERROR_MESSAGES","description","keys","typeData","map","c","LIST","clazz","entries","filter","k","includes","optional","Metadata","constructor","describe","res","descriptor","getOwnPropertyDescriptor","value","constr","fromModel","VERSION","registerLibrary"],"mappings":"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"}
|
package/dist/as-zod.js
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{Metadata as e}from"@decaf-ts/decoration";import{ValidationKeys as r,ModelKeys as t,Model as o,DEFAULT_ERROR_MESSAGES as n,Primitives as c}from"@decaf-ts/decorator-validation";import{z as s,ZodAny as a}from"zod";import{Reflection as i}from"@decaf-ts/reflection";const u=[r.REQUIRED,r.TYPE,r.DATE,t.TYPE];function f(e,t=a){function n(e){switch(e.toLowerCase()){case c.STRING:return s.string();case c.NUMBER:return s.number();case c.BIGINT:return s.bigint();case c.BOOLEAN:return s.boolean();case r.DATE:return s.date();case Array.name.toLowerCase():return s.array(t);case Set.name.toLowerCase():{const e=s.set(t);return void 0===e.valueSchema&&Object.defineProperty(e,"valueSchema",{get:()=>e._def?.valueType,enumerable:!1,configurable:!0}),e}default:{const r=o.get(e);if(!r)throw Error("Unzodifiable type: "+e);try{return s.from(r)}catch(r){throw Error(`Failed to zodify model ${e}: ${r}`)}}}}let i;e="string"==typeof e?[e]:e;for(const r of e)i=i?i.or(n(r)):n(r);return i}function p(e,t,o){switch(t){case r.MIN:return e.min(o[r.MIN]);case r.MIN_LENGTH:return e.min(o[r.MIN_LENGTH]);case r.MAX:return e.max(o[r.MAX]);case r.MAX_LENGTH:return e.max(o[r.MAX_LENGTH]);case r.STEP:return e.multipleOf(o[r.STEP]);case r.PATTERN:case r.URL:case r.EMAIL:case r.PASSWORD:return e.regex(RegExp(o[r.PATTERN],"g"));case r.DATE:throw new TypeError("DATE validator cannot be applied as a refinement");default:return e}}function m(c){const m={},E=o.getAttributes(c);if(Array.isArray(E)&&!E.length)return s.object({});for(const o of E){if("function"==typeof c[o]||o.startsWith("_")||"constructor"===o)continue;const s=i.getPropertyDecorators(r.REFLECT,c,o,!1,!0).decorators.reduce((e,o)=>{const{key:c,props:s}=o;return c!==t.TYPE||e[r.TYPE]?e[c]=s:e[r.TYPE]={customTypes:[s.name],message:n.TYPE,description:"defines the accepted types for the attribute"},e},{});if(!Object.keys(s).length)continue;let E=a;const T=s[r.TYPE];if(!T)throw Error("Missing type information");E=f((Array.isArray(T.customTypes)?T.customTypes:[T.customTypes]).map(e=>"function"==typeof e?e():e),s[r.LIST]?f((Array.isArray(s[r.LIST].clazz)?s[r.LIST].clazz:[s[r.LIST].clazz]).map(e=>"function"==typeof e?e().name:e)):a);for(const[e,r]of Object.entries(s).filter(([e])=>{return r=e,!u.includes(r);var r}))E=p(E,e,r);s[r.REQUIRED]||(E=E.optional());const d=e.description(c.constructor,o);d&&(E=E.describe(d)),m[o]=E}const T=e.description(c.constructor),d=s.object(m);return T?d.describe(T):d}const E=Object.getOwnPropertyDescriptor(s,"from");E&&!E.configurable||Object.defineProperty(s,"from",{value:r=>{const t=new r;return e.constr(t.constructor)||o.fromModel(t,{}),m(t)}});const T="##VERSION##";e.registerLibrary("@decaf-ts/as-zod",T);export{T as VERSION,m as modelToZod,f as zodify,p as zodifyValidation};
|
|
2
|
+
//# sourceMappingURL=as-zod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"as-zod.js","sources":["../src/overrides.ts","../src/index.ts"],"sourcesContent":[null,null],"names":["ReservedKeys","ValidationKeys","REQUIRED","TYPE","DATE","ModelKeys","zodify","type","zz","ZodAny","innerZodify","toLowerCase","Primitives","STRING","z","string","NUMBER","number","BIGINT","bigint","BOOLEAN","boolean","date","Array","name","array","Set","setSchema","set","valueSchema","Object","defineProperty","get","_def","valueType","enumerable","configurable","m","Model","Error","from","e","zod","t","or","zodifyValidation","values","MIN","min","MIN_LENGTH","MAX","max","MAX_LENGTH","STEP","multipleOf","PATTERN","URL","EMAIL","PASSWORD","regex","RegExp","TypeError","modelToZod","model","result","properties","getAttributes","isArray","length","object","prop","startsWith","decoratorData","Reflection","getPropertyDecorators","REFLECT","decorators","reduce","accum","el","key","props","customTypes","message","DEFAULT_ERROR_MESSAGES","description","keys","typeData","map","c","LIST","clazz","entries","filter","k","includes","optional","Metadata","constructor","describe","res","descriptor","getOwnPropertyDescriptor","value","constr","fromModel","VERSION","registerLibrary"],"mappings":"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"}
|
package/lib/esm/index.d.ts
CHANGED
package/lib/esm/index.js
CHANGED
|
@@ -7,6 +7,6 @@ export * from "./overrides.js";
|
|
|
7
7
|
* @const VERSION
|
|
8
8
|
* @memberOf module:as-zod
|
|
9
9
|
*/
|
|
10
|
-
export const VERSION = "
|
|
10
|
+
export const VERSION = "##VERSION##";
|
|
11
11
|
Metadata.registerLibrary("@decaf-ts/as-zod", VERSION);
|
|
12
|
-
//# sourceMappingURL=
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,yBAAsB;AACtB,+BAA4B;AAE5B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,CAAC;AAErC,QAAQ,CAAC,eAAe,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC"}
|
package/lib/esm/overrides.d.ts
CHANGED
|
@@ -2,4 +2,4 @@ import { Model, ValidatorOptions } from "@decaf-ts/decorator-validation";
|
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
export declare function zodify(type: string | string[], zz?: any): any;
|
|
4
4
|
export declare function zodifyValidation(zod: any, type: string, values: ValidatorOptions): any;
|
|
5
|
-
export declare function modelToZod<M extends Model>(model: M): z.ZodObject<{},
|
|
5
|
+
export declare function modelToZod<M extends Model>(model: M): z.ZodObject<{}, z.core.$strip>;
|
package/lib/esm/overrides.js
CHANGED
|
@@ -6,6 +6,7 @@ import { ValidationKeys } from "@decaf-ts/decorator-validation";
|
|
|
6
6
|
const ReservedKeys = [
|
|
7
7
|
ValidationKeys.REQUIRED,
|
|
8
8
|
ValidationKeys.TYPE,
|
|
9
|
+
ValidationKeys.DATE,
|
|
9
10
|
ModelKeys.TYPE,
|
|
10
11
|
];
|
|
11
12
|
function isReservedKey(el) {
|
|
@@ -27,8 +28,17 @@ export function zodify(type, zz = ZodAny) {
|
|
|
27
28
|
return z.date();
|
|
28
29
|
case Array.name.toLowerCase():
|
|
29
30
|
return z.array(zz);
|
|
30
|
-
case Set.name.toLowerCase():
|
|
31
|
-
|
|
31
|
+
case Set.name.toLowerCase(): {
|
|
32
|
+
const setSchema = z.set(zz);
|
|
33
|
+
if (typeof setSchema.valueSchema === "undefined") {
|
|
34
|
+
Object.defineProperty(setSchema, "valueSchema", {
|
|
35
|
+
get: () => setSchema._def?.valueType,
|
|
36
|
+
enumerable: false,
|
|
37
|
+
configurable: true,
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
return setSchema;
|
|
41
|
+
}
|
|
32
42
|
default: {
|
|
33
43
|
const m = Model.get(type);
|
|
34
44
|
if (!m) {
|
|
@@ -68,7 +78,8 @@ export function zodifyValidation(zod, type, values) {
|
|
|
68
78
|
case ValidationKeys.PASSWORD:
|
|
69
79
|
return zod.regex(new RegExp(values[ValidationKeys.PATTERN], "g"));
|
|
70
80
|
case ValidationKeys.DATE:
|
|
71
|
-
|
|
81
|
+
// DATE decorator is handled via @type(Date) and parsing; do not re-wrap here
|
|
82
|
+
throw new TypeError("DATE validator cannot be applied as a refinement");
|
|
72
83
|
default:
|
|
73
84
|
return zod;
|
|
74
85
|
}
|
|
@@ -137,10 +148,7 @@ export function modelToZod(model) {
|
|
|
137
148
|
}
|
|
138
149
|
const description = Metadata.description(model.constructor);
|
|
139
150
|
const res = z.object(result);
|
|
140
|
-
|
|
141
|
-
res.describe(description);
|
|
142
|
-
}
|
|
143
|
-
return res;
|
|
151
|
+
return description ? res.describe(description) : res;
|
|
144
152
|
}
|
|
145
153
|
const descriptor = Object.getOwnPropertyDescriptor(z, "from");
|
|
146
154
|
if (!descriptor || descriptor.configurable) {
|
|
@@ -153,4 +161,4 @@ if (!descriptor || descriptor.configurable) {
|
|
|
153
161
|
},
|
|
154
162
|
});
|
|
155
163
|
}
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL292ZXJyaWRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0wsS0FBSyxFQUNMLFNBQVMsRUFFVCxVQUFVLEVBQ1Ysc0JBQXNCLEdBVXZCLE1BQU0sZ0NBQWdDLENBQUM7QUFDeEMsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2hELE9BQU8sRUFBRSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sS0FBSyxDQUFDO0FBQ2hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFaEUsTUFBTSxZQUFZLEdBQUc7SUFDbkIsY0FBYyxDQUFDLFFBQVE7SUFDdkIsY0FBYyxDQUFDLElBQUk7SUFDbkIsU0FBUyxDQUFDLElBQUk7Q0FDTixDQUFDO0FBRVgsU0FBUyxhQUFhLENBQUMsRUFBVTtJQUMvQixPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBUyxDQUFDLENBQUM7QUFDMUMsQ0FBQztBQUVELE1BQU0sVUFBVSxNQUFNLENBQUMsSUFBdUIsRUFBRSxLQUFVLE1BQU07SUFDOUQsSUFBSSxHQUFHLE9BQU8sSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBRWhELFNBQVMsV0FBVyxDQUFDLElBQVk7UUFDL0IsUUFBUSxJQUFJLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQztZQUMzQixLQUFLLFVBQVUsQ0FBQyxNQUFNO2dCQUNwQixPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixLQUFLLFVBQVUsQ0FBQyxNQUFNO2dCQUNwQixPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixLQUFLLFVBQVUsQ0FBQyxNQUFNO2dC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QyxDQUFDO0lBQ25FLE1BQU0sR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNoQixHQUFHLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsd0JBQXdCLENBQUMsQ0FBQyxFQUFFLE1BQXdCLENBQUMsQ0FBQztBQUVoRixJQUFJLENBQUMsVUFBVSxJQUFJLFVBQVUsQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUMzQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUU7UUFDL0IsS0FBSyxFQUFFLENBQWtCLEtBQXFCLEVBQUUsRUFBRTtZQUNoRCxNQUFNLENBQUMsR0FBRyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFrQixDQUFDO2dCQUFFLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25FLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBUSxDQUFDO1FBQzlCLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTW9kZWwsXG4gIE1vZGVsS2V5cyxcbiAgVHlwZU1ldGFkYXRhLFxuICBQcmltaXRpdmVzLFxuICBERUZBVUxUX0VSUk9SX01FU1NBR0VTLFxuICBWYWxpZGF0b3JPcHRpb25zLFxuICBNaW5MZW5ndGhWYWxpZGF0b3JPcHRpb25zLFxuICBNaW5WYWxpZGF0b3JPcHRpb25zLFxuICBNYXhWYWxpZGF0b3JPcHRpb25zLFxuICBNYXhMZW5ndGhWYWxpZGF0b3JPcHRpb25zLFxuICBTdGVwVmFsaWRhdG9yT3B0aW9ucyxcbiAgUGF0dGVyblZhbGlkYXRvck9wdGlvbnMsXG4gIExpc3RNZXRhZGF0YSxcbiAgQ29uc3RydWN0b3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyB6LCBab2RBbnkgfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyBSZWZsZWN0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcblxuY29uc3QgUmVzZXJ2ZWRLZXlzID0gW1xuICBWYWxpZGF0aW9uS2V5cy5SRVFVSVJFRCxcbiAgVmFsaWRhdGlvbktleXMuVFlQRSxcbiAgTW9kZWxLZXlzLlRZUEUsXG5dIGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBpc1Jlc2VydmVkS2V5KGVsOiBzdHJpbmcpIHtcbiAgcmV0dXJuIFJlc2VydmVkS2V5cy5pbmNsdWRlcyhlbCBhcyBhbnkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gem9kaWZ5KHR5cGU6IHN0cmluZyB8IHN0cmluZ1tdLCB6ejogYW55ID0gWm9kQW55KSB7XG4gIHR5cGUgPSB0eXBlb2YgdHlwZSA9PT0gXCJzdHJpbmdcIiA/IFt0eXBlXSA6IHR5cGU7XG5cbiAgZnVuY3Rpb24gaW5uZXJab2RpZnkodHlwZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoICh0eXBlLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgUHJpbWl0aXZlcy5TVFJJTkc6XG4gICAgICAgIHJldHVybiB6LnN0cmluZygpO1xuICAgICAgY2FzZSBQcmltaXRpdmVzLk5VTUJFUjpcbiAgICAgICAgcmV0dXJuIHoubnVtYmVyKCk7XG4gICAgICBjYXNlIFByaW1pdGl2ZXMuQklHSU5UOlxuICAgICAgICByZXR1cm4gei5iaWdpbnQoKTtcbiAgICAgIGNhc2UgUHJpbWl0aXZlcy5CT09MRUFOOlxuICAgICAgICByZXR1cm4gei5ib29sZWFuKCk7XG4gICAgICBjYXNlIFZhbGlkYXRpb25LZXlzLkRBVEU6XG4gICAgICAgIHJldHVybiB6LmRhdGUoKTtcbiAgICAgIGNhc2UgQXJyYXkubmFtZS50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gei5hcnJheSh6eik7XG4gICAgICBjYXNlIFNldC5uYW1lLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiB6LnNldCh6eik7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnN0IG0gPSBNb2RlbC5nZXQodHlwZSk7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW56b2RpZmlhYmxlIHR5cGU6ICR7dHlwZX1gKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHp6ID0gei5mcm9tKG0pO1xuICAgICAgICAgIHJldHVybiB6ejtcbiAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHpvZGlmeSBtb2RlbCAke3R5cGV9OiAke2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgem9kOiBhbnk7XG4gIGZvciAoY29uc3QgdCBvZiB0eXBlKSB7XG4gICAgem9kID0gem9kID8gem9kLm9yKGlubmVyWm9kaWZ5KHQpKSA6IGlubmVyWm9kaWZ5KHQpO1xuICB9XG5cbiAgcmV0dXJuIHpvZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHpvZGlmeVZhbGlkYXRpb24oXG4gIHpvZDogYW55LFxuICB0eXBlOiBzdHJpbmcsXG4gIHZhbHVlczogVmFsaWRhdG9yT3B0aW9uc1xuKSB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgVmFsaWRhdGlvbktleXMuTUlOOlxuICAgICAgcmV0dXJuIHpvZC5taW4oKHZhbHVlcyBhcyBNaW5WYWxpZGF0b3JPcHRpb25zKVtWYWxpZGF0aW9uS2V5cy5NSU5dKTtcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLk1JTl9MRU5HVEg6XG4gICAgICByZXR1cm4gem9kLm1pbihcbiAgICAgICAgKHZhbHVlcyBhcyBNaW5MZW5ndGhWYWxpZGF0b3JPcHRpb25zKVtWYWxpZGF0aW9uS2V5cy5NSU5fTEVOR1RIXVxuICAgICAgKTtcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLk1BWDpcbiAgICAgIHJldHVybiB6b2QubWF4KCh2YWx1ZXMgYXMgTWF4VmFsaWRhdG9yT3B0aW9ucylbVmFsaWRhdGlvbktleXMuTUFYXSk7XG4gICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5NQVhfTEVOR1RIOlxuICAgICAgcmV0dXJuIHpvZC5tYXgoXG4gICAgICAgICh2YWx1ZXMgYXMgTWF4TGVuZ3RoVmFsaWRhdG9yT3B0aW9ucylbVmFsaWRhdGlvbktleXMuTUFYX0xFTkdUSF1cbiAgICAgICk7XG4gICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5TVEVQOlxuICAgICAgcmV0dXJuIHpvZC5tdWx0aXBsZU9mKFxuICAgICAgICAodmFsdWVzIGFzIFN0ZXBWYWxpZGF0b3JPcHRpb25zKVtWYWxpZGF0aW9uS2V5cy5TVEVQXVxuICAgICAgKTtcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLlBBVFRFUk46XG4gICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5VUkw6XG4gICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5FTUFJTDpcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLlBBU1NXT1JEOlxuICAgICAgcmV0dXJuIHpvZC5yZWdleChcbiAgICAgICAgbmV3IFJlZ0V4cChcbiAgICAgICAgICAodmFsdWVzIGFzIFBhdHRlcm5WYWxpZGF0b3JPcHRpb25zKVtWYWxpZGF0aW9uS2V5cy5QQVRURVJOXSBhcyBzdHJpbmcsXG4gICAgICAgICAgXCJnXCJcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLkRBVEU6XG4gICAgICByZXR1cm4gem9kLmRhdGUoKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHpvZDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxUb1pvZDxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNKSB7XG4gIGNvbnN0IHJlc3VsdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIGNvbnN0IHByb3BlcnRpZXMgPSBNb2RlbC5nZXRBdHRyaWJ1dGVzKG1vZGVsKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkocHJvcGVydGllcykgJiYgIXByb3BlcnRpZXMubGVuZ3RoKSByZXR1cm4gei5vYmplY3Qoe30pO1xuICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcGVydGllcykge1xuICAgIGlmIChcbiAgICAgIHR5cGVvZiAobW9kZWwgYXMgYW55KVtwcm9wXSA9PT0gXCJmdW5jdGlvblwiIHx8XG4gICAgICBwcm9wLnN0YXJ0c1dpdGgoXCJfXCIpIHx8XG4gICAgICBwcm9wID09PSBcImNvbnN0cnVjdG9yXCJcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbERlY3MgPSBSZWZsZWN0aW9uLmdldFByb3BlcnR5RGVjb3JhdG9ycyhcbiAgICAgIFZhbGlkYXRpb25LZXlzLlJFRkxFQ1QsXG4gICAgICBtb2RlbCxcbiAgICAgIHByb3AsXG4gICAgICBmYWxzZSxcbiAgICAgIHRydWVcbiAgICApO1xuXG4gICAgY29uc3QgZGVjb3JhdG9yRGF0YSA9IGFsbERlY3MuZGVjb3JhdG9ycy5yZWR1Y2UoXG4gICAgICAoYWNjdW06IFJlY29yZDxzdHJpbmcsIGFueT4sIGVsKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCBwcm9wcyB9ID0gZWw7XG4gICAgICAgIGlmIChrZXkgPT09IE1vZGVsS2V5cy5UWVBFICYmICFhY2N1bVtWYWxpZGF0aW9uS2V5cy5UWVBFXSkge1xuICAgICAgICAgIGFjY3VtW1ZhbGlkYXRpb25LZXlzLlRZUEVdID0ge1xuICAgICAgICAgICAgY3VzdG9tVHlwZXM6IFtwcm9wcy5uYW1lIGFzIHN0cmluZ10sXG4gICAgICAgICAgICBtZXNzYWdlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlRZUEUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJkZWZpbmVzIHRoZSBhY2NlcHRlZCB0eXBlcyBmb3IgdGhlIGF0dHJpYnV0ZVwiLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWNjdW1ba2V5XSA9IHByb3BzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2N1bTtcbiAgICAgIH0sXG4gICAgICB7fVxuICAgICk7XG5cbiAgICBpZiAoIU9iamVjdC5rZXlzKGRlY29yYXRvckRhdGEpLmxlbmd0aCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbGV0IHpvZDogYW55ID0gWm9kQW55O1xuXG4gICAgY29uc3QgdHlwZURhdGE6IFR5cGVNZXRhZGF0YSA9IGRlY29yYXRvckRhdGFbXG4gICAgICBWYWxpZGF0aW9uS2V5cy5UWVBFXG4gICAgXSBhcyBUeXBlTWV0YWRhdGE7XG5cbiAgICBpZiAoIXR5cGVEYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgdHlwZSBpbmZvcm1hdGlvbmApO1xuICAgIH1cblxuICAgIHpvZCA9IHpvZGlmeShcbiAgICAgIChBcnJheS5pc0FycmF5KHR5cGVEYXRhLmN1c3RvbVR5cGVzKVxuICAgICAgICA/IHR5cGVEYXRhLmN1c3RvbVR5cGVzXG4gICAgICAgIDogW3R5cGVEYXRhLmN1c3RvbVR5cGVzXVxuICAgICAgKS5tYXAoKGMpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBjKCk7XG4gICAgICAgIHJldHVybiBjO1xuICAgICAgfSksXG4gICAgICBkZWNvcmF0b3JEYXRhW1ZhbGlkYXRpb25LZXlzLkxJU1RdXG4gICAgICAgID8gem9kaWZ5KFxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkoXG4gICAgICAgICAgICAgIChkZWNvcmF0b3JEYXRhW1ZhbGlkYXRpb25LZXlzLkxJU1RdIGFzIExpc3RNZXRhZGF0YSkuY2xhenpcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgPyAoZGVjb3JhdG9yRGF0YVtWYWxpZGF0aW9uS2V5cy5MSVNUXSBhcyBMaXN0TWV0YWRhdGEpLmNsYXp6XG4gICAgICAgICAgICAgIDogWyhkZWNvcmF0b3JEYXRhW1ZhbGlkYXRpb25LZXlzLkxJU1RdIGFzIExpc3RNZXRhZGF0YSkuY2xhenpdXG4gICAgICAgICAgICApLm1hcCgoYykgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBjKCkubmFtZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gYyBhcyBzdHJpbmc7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgOiBab2RBbnlcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCBwcm9wc10gb2YgT2JqZWN0LmVudHJpZXMoZGVjb3JhdG9yRGF0YSkuZmlsdGVyKFxuICAgICAgKFtrXSkgPT4gIWlzUmVzZXJ2ZWRLZXkoaylcbiAgICApKSB7XG4gICAgICB6b2QgPSB6b2RpZnlWYWxpZGF0aW9uKHpvZCwga2V5LCBwcm9wcyk7XG4gICAgfVxuXG4gICAgaWYgKCFkZWNvcmF0b3JEYXRhW1ZhbGlkYXRpb25LZXlzLlJFUVVJUkVEXSkge1xuICAgICAgem9kID0gem9kLm9wdGlvbmFsKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBNZXRhZGF0YS5kZXNjcmlwdGlvbihcbiAgICAgIG1vZGVsLmNvbnN0cnVjdG9yIGFzIGFueSxcbiAgICAgIHByb3AgYXMgYW55XG4gICAgKTtcblxuICAgIGlmIChkZXNjcmlwdGlvbikge1xuICAgICAgem9kID0gem9kLmRlc2NyaWJlKGRlc2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICByZXN1bHRbcHJvcF0gPSB6b2Q7XG4gIH1cblxuICBjb25zdCBkZXNjcmlwdGlvbiA9IE1ldGFkYXRhLmRlc2NyaXB0aW9uKG1vZGVsLmNvbnN0cnVjdG9yIGFzIGFueSk7XG4gIGNvbnN0IHJlcyA9IHoub2JqZWN0KHJlc3VsdCk7XG4gIGlmIChkZXNjcmlwdGlvbikge1xuICAgIHJlcy5kZXNjcmliZShkZXNjcmlwdGlvbik7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeiwgXCJmcm9tXCIgYXMga2V5b2YgdHlwZW9mIHopO1xuXG5pZiAoIWRlc2NyaXB0b3IgfHwgZGVzY3JpcHRvci5jb25maWd1cmFibGUpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHosIFwiZnJvbVwiLCB7XG4gICAgdmFsdWU6IDxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBDb25zdHJ1Y3RvcjxNPikgPT4ge1xuICAgICAgY29uc3QgbSA9IG5ldyBtb2RlbCgpO1xuICAgICAgaWYgKCFNZXRhZGF0YS5jb25zdHIobS5jb25zdHJ1Y3RvciBhcyBhbnkpKSBNb2RlbC5mcm9tTW9kZWwobSwge30pO1xuICAgICAgcmV0dXJuIG1vZGVsVG9ab2QobSkgYXMgYW55O1xuICAgIH0sXG4gIH0pO1xufVxuIl19
|
|
164
|
+
//# sourceMappingURL=overrides.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/overrides.ts"],"names":[],"mappings":"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"}
|
package/lib/esm/zod.d.ts
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import type { Constructor, Model } from "@decaf-ts/decorator-validation";
|
|
2
|
-
import { ZodObject } from "zod";
|
|
2
|
+
import type { ZodArray, ZodBigInt, ZodBoolean, ZodDate, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodSet, ZodString, ZodTypeAny } from "zod";
|
|
3
|
+
type BaseZodSchemaFor<T> = T extends string ? ZodString : T extends number ? ZodNumber : T extends boolean ? ZodBoolean : T extends bigint ? ZodBigInt : T extends Date ? ZodDate : T extends any[] ? ZodArray<ZodTypeAny> : T extends Set<any> ? ZodSet<ZodTypeAny> : T extends Model ? ZodObject<any> : ZodTypeAny;
|
|
4
|
+
export type ZodSchemaFor<T> = undefined extends T ? ZodOptional<BaseZodSchemaFor<Exclude<T, undefined>>> : null extends T ? ZodNullable<BaseZodSchemaFor<NonNullable<T>>> : BaseZodSchemaFor<T>;
|
|
5
|
+
export type ZodShapeFor<M> = {
|
|
6
|
+
[K in keyof M as M[K] extends (...args: any[]) => any ? never : K]: ZodSchemaFor<M[K]>;
|
|
7
|
+
};
|
|
8
|
+
export type ZodFrom<M extends Model> = ZodObject<ZodShapeFor<M>>;
|
|
9
|
+
export type ListOf<T> = T[];
|
|
10
|
+
export type SetOf<T> = Set<T>;
|
|
3
11
|
declare module "zod" {
|
|
4
12
|
namespace z {
|
|
5
|
-
function from<M extends Model>(model: Constructor<M>):
|
|
13
|
+
function from<M extends Model>(model: Constructor<M>): ZodFrom<M>;
|
|
6
14
|
}
|
|
7
15
|
}
|
|
16
|
+
export {};
|
package/lib/esm/zod.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=
|
|
2
|
+
//# sourceMappingURL=zod.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.js","sourceRoot":"","sources":["../../src/zod.ts"],"names":[],"mappings":""}
|
package/lib/index.cjs
CHANGED
|
@@ -24,6 +24,6 @@ __exportStar(require("./overrides.cjs"), exports);
|
|
|
24
24
|
* @const VERSION
|
|
25
25
|
* @memberOf module:as-zod
|
|
26
26
|
*/
|
|
27
|
-
exports.VERSION = "
|
|
27
|
+
exports.VERSION = "##VERSION##";
|
|
28
28
|
decoration_1.Metadata.registerLibrary("@decaf-ts/as-zod", exports.VERSION);
|
|
29
|
-
//# sourceMappingURL=
|
|
29
|
+
//# sourceMappingURL=index.js.map
|
package/lib/index.d.ts
CHANGED
package/lib/index.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAgD;AAEhD,4CAAsB;AACtB,kDAA4B;AAE5B;;;;;GAKG;AACU,QAAA,OAAO,GAAG,aAAa,CAAC;AAErC,qBAAQ,CAAC,eAAe,CAAC,kBAAkB,EAAE,eAAO,CAAC,CAAC"}
|
package/lib/overrides.cjs
CHANGED
|
@@ -11,6 +11,7 @@ const decorator_validation_2 = require("@decaf-ts/decorator-validation");
|
|
|
11
11
|
const ReservedKeys = [
|
|
12
12
|
decorator_validation_2.ValidationKeys.REQUIRED,
|
|
13
13
|
decorator_validation_2.ValidationKeys.TYPE,
|
|
14
|
+
decorator_validation_2.ValidationKeys.DATE,
|
|
14
15
|
decorator_validation_1.ModelKeys.TYPE,
|
|
15
16
|
];
|
|
16
17
|
function isReservedKey(el) {
|
|
@@ -32,8 +33,17 @@ function zodify(type, zz = zod_1.ZodAny) {
|
|
|
32
33
|
return zod_1.z.date();
|
|
33
34
|
case Array.name.toLowerCase():
|
|
34
35
|
return zod_1.z.array(zz);
|
|
35
|
-
case Set.name.toLowerCase():
|
|
36
|
-
|
|
36
|
+
case Set.name.toLowerCase(): {
|
|
37
|
+
const setSchema = zod_1.z.set(zz);
|
|
38
|
+
if (typeof setSchema.valueSchema === "undefined") {
|
|
39
|
+
Object.defineProperty(setSchema, "valueSchema", {
|
|
40
|
+
get: () => setSchema._def?.valueType,
|
|
41
|
+
enumerable: false,
|
|
42
|
+
configurable: true,
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return setSchema;
|
|
46
|
+
}
|
|
37
47
|
default: {
|
|
38
48
|
const m = decorator_validation_1.Model.get(type);
|
|
39
49
|
if (!m) {
|
|
@@ -73,7 +83,8 @@ function zodifyValidation(zod, type, values) {
|
|
|
73
83
|
case decorator_validation_2.ValidationKeys.PASSWORD:
|
|
74
84
|
return zod.regex(new RegExp(values[decorator_validation_2.ValidationKeys.PATTERN], "g"));
|
|
75
85
|
case decorator_validation_2.ValidationKeys.DATE:
|
|
76
|
-
|
|
86
|
+
// DATE decorator is handled via @type(Date) and parsing; do not re-wrap here
|
|
87
|
+
throw new TypeError("DATE validator cannot be applied as a refinement");
|
|
77
88
|
default:
|
|
78
89
|
return zod;
|
|
79
90
|
}
|
|
@@ -142,10 +153,7 @@ function modelToZod(model) {
|
|
|
142
153
|
}
|
|
143
154
|
const description = decoration_1.Metadata.description(model.constructor);
|
|
144
155
|
const res = zod_1.z.object(result);
|
|
145
|
-
|
|
146
|
-
res.describe(description);
|
|
147
|
-
}
|
|
148
|
-
return res;
|
|
156
|
+
return description ? res.describe(description) : res;
|
|
149
157
|
}
|
|
150
158
|
const descriptor = Object.getOwnPropertyDescriptor(zod_1.z, "from");
|
|
151
159
|
if (!descriptor || descriptor.configurable) {
|
|
@@ -158,4 +166,4 @@ if (!descriptor || descriptor.configurable) {
|
|
|
158
166
|
},
|
|
159
167
|
});
|
|
160
168
|
}
|
|
161
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3ZlcnJpZGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL292ZXJyaWRlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQStCQSx3QkF3Q0M7QUFFRCw0Q0FxQ0M7QUFFRCxnQ0EwR0M7QUExTkQseUVBZXdDO0FBQ3hDLHFEQUFnRDtBQUNoRCw2QkFBZ0M7QUFDaEMscURBQWtEO0FBQ2xELHlFQUFnRTtBQUVoRSxNQUFNLFlBQVksR0FBRztJQUNuQixxQ0FBYyxDQUFDLFFBQVE7SUFDdkIscUNBQWMsQ0FBQyxJQUFJO0lBQ25CLGdDQUFTLENBQUMsSUFBSTtDQUNOLENBQUM7QUFFWCxTQUFTLGFBQWEsQ0FBQyxFQUFVO0lBQy9CLE9BQU8sWUFBWSxDQUFDLFFBQVEsQ0FBQyxFQUFTLENBQUMsQ0FBQztBQUMxQyxDQUFDO0FBRUQsU0FBZ0IsTUFBTSxDQUFDLElBQXVCLEVBQUUsS0FBVSxZQUFNO0lBQzlELElBQUksR0FBRyxPQUFPLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztJQUVoRCxTQUFTLFdBQVcsQ0FBQyxJQUFZO1FBQy9CLFFBQVEsSUFBSSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDM0IsS0FBSyxpQ0FBVSxDQUFDLE1BQU07Z0JBQ3BCLE9BQU8sT0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3BCLEtBQUssaUNBQVUsQ0FBQyxNQUFNO2dCQUNwQixPQUFPLE9BQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNwQixLQUFLLGlDQUFVLENBQUMsTUFBTTtnQkFDcEIsT0FBTyxPQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsS0FBSyxpQ0FBVSxDQUFDLE9BQU87Z0JBQ3JCLE9BQU8sT0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3JCLEtBQUsscUNBQWMsQ0FBQyxJQUFJO2dCQUN0QixPQUFPLE9BQUMsQ0FBQyxJQUFJ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QUM7SUFDNUIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUVELE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyx3QkFBd0IsQ0FBQyxPQUFDLEVBQUUsTUFBd0IsQ0FBQyxDQUFDO0FBRWhGLElBQUksQ0FBQyxVQUFVLElBQUksVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO0lBQzNDLE1BQU0sQ0FBQyxjQUFjLENBQUMsT0FBQyxFQUFFLE1BQU0sRUFBRTtRQUMvQixLQUFLLEVBQUUsQ0FBa0IsS0FBcUIsRUFBRSxFQUFFO1lBQ2hELE1BQU0sQ0FBQyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLHFCQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxXQUFrQixDQUFDO2dCQUFFLDRCQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNuRSxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQVEsQ0FBQztRQUM5QixDQUFDO0tBQ0YsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIE1vZGVsLFxuICBNb2RlbEtleXMsXG4gIFR5cGVNZXRhZGF0YSxcbiAgUHJpbWl0aXZlcyxcbiAgREVGQVVMVF9FUlJPUl9NRVNTQUdFUyxcbiAgVmFsaWRhdG9yT3B0aW9ucyxcbiAgTWluTGVuZ3RoVmFsaWRhdG9yT3B0aW9ucyxcbiAgTWluVmFsaWRhdG9yT3B0aW9ucyxcbiAgTWF4VmFsaWRhdG9yT3B0aW9ucyxcbiAgTWF4TGVuZ3RoVmFsaWRhdG9yT3B0aW9ucyxcbiAgU3RlcFZhbGlkYXRvck9wdGlvbnMsXG4gIFBhdHRlcm5WYWxpZGF0b3JPcHRpb25zLFxuICBMaXN0TWV0YWRhdGEsXG4gIENvbnN0cnVjdG9yLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBNZXRhZGF0YSB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdGlvblwiO1xuaW1wb3J0IHsgeiwgWm9kQW55IH0gZnJvbSBcInpvZFwiO1xuaW1wb3J0IHsgUmVmbGVjdGlvbiB9IGZyb20gXCJAZGVjYWYtdHMvcmVmbGVjdGlvblwiO1xuaW1wb3J0IHsgVmFsaWRhdGlvbktleXMgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbmNvbnN0IFJlc2VydmVkS2V5cyA9IFtcbiAgVmFsaWRhdGlvbktleXMuUkVRVUlSRUQsXG4gIFZhbGlkYXRpb25LZXlzLlRZUEUsXG4gIE1vZGVsS2V5cy5UWVBFLFxuXSBhcyBjb25zdDtcblxuZnVuY3Rpb24gaXNSZXNlcnZlZEtleShlbDogc3RyaW5nKSB7XG4gIHJldHVybiBSZXNlcnZlZEtleXMuaW5jbHVkZXMoZWwgYXMgYW55KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHpvZGlmeSh0eXBlOiBzdHJpbmcgfCBzdHJpbmdbXSwgeno6IGFueSA9IFpvZEFueSkge1xuICB0eXBlID0gdHlwZW9mIHR5cGUgPT09IFwic3RyaW5nXCIgPyBbdHlwZV0gOiB0eXBlO1xuXG4gIGZ1bmN0aW9uIGlubmVyWm9kaWZ5KHR5cGU6IHN0cmluZykge1xuICAgIHN3aXRjaCAodHlwZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICBjYXNlIFByaW1pdGl2ZXMuU1RSSU5HOlxuICAgICAgICByZXR1cm4gei5zdHJpbmcoKTtcbiAgICAgIGNhc2UgUHJpbWl0aXZlcy5OVU1CRVI6XG4gICAgICAgIHJldHVybiB6Lm51bWJlcigpO1xuICAgICAgY2FzZSBQcmltaXRpdmVzLkJJR0lOVDpcbiAgICAgICAgcmV0dXJuIHouYmlnaW50KCk7XG4gICAgICBjYXNlIFByaW1pdGl2ZXMuQk9PTEVBTjpcbiAgICAgICAgcmV0dXJuIHouYm9vbGVhbigpO1xuICAgICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5EQVRFOlxuICAgICAgICByZXR1cm4gei5kYXRlKCk7XG4gICAgICBjYXNlIEFycmF5Lm5hbWUudG9Mb3dlckNhc2UoKTpcbiAgICAgICAgcmV0dXJuIHouYXJyYXkoenopO1xuICAgICAgY2FzZSBTZXQubmFtZS50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gei5zZXQoenopO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICBjb25zdCBtID0gTW9kZWwuZ2V0KHR5cGUpO1xuICAgICAgICBpZiAoIW0pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuem9kaWZpYWJsZSB0eXBlOiAke3R5cGV9YCk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCB6eiA9IHouZnJvbShtKTtcbiAgICAgICAgICByZXR1cm4geno7XG4gICAgICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byB6b2RpZnkgbW9kZWwgJHt0eXBlfTogJHtlfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbGV0IHpvZDogYW55O1xuICBmb3IgKGNvbnN0IHQgb2YgdHlwZSkge1xuICAgIHpvZCA9IHpvZCA/IHpvZC5vcihpbm5lclpvZGlmeSh0KSkgOiBpbm5lclpvZGlmeSh0KTtcbiAgfVxuXG4gIHJldHVybiB6b2Q7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB6b2RpZnlWYWxpZGF0aW9uKFxuICB6b2Q6IGFueSxcbiAgdHlwZTogc3RyaW5nLFxuICB2YWx1ZXM6IFZhbGlkYXRvck9wdGlvbnNcbikge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLk1JTjpcbiAgICAgIHJldHVybiB6b2QubWluKCh2YWx1ZXMgYXMgTWluVmFsaWRhdG9yT3B0aW9ucylbVmFsaWRhdGlvbktleXMuTUlOXSk7XG4gICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5NSU5fTEVOR1RIOlxuICAgICAgcmV0dXJuIHpvZC5taW4oXG4gICAgICAgICh2YWx1ZXMgYXMgTWluTGVuZ3RoVmFsaWRhdG9yT3B0aW9ucylbVmFsaWRhdGlvbktleXMuTUlOX0xFTkdUSF1cbiAgICAgICk7XG4gICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5NQVg6XG4gICAgICByZXR1cm4gem9kLm1heCgodmFsdWVzIGFzIE1heFZhbGlkYXRvck9wdGlvbnMpW1ZhbGlkYXRpb25LZXlzLk1BWF0pO1xuICAgIGNhc2UgVmFsaWRhdGlvbktleXMuTUFYX0xFTkdUSDpcbiAgICAgIHJldHVybiB6b2QubWF4KFxuICAgICAgICAodmFsdWVzIGFzIE1heExlbmd0aFZhbGlkYXRvck9wdGlvbnMpW1ZhbGlkYXRpb25LZXlzLk1BWF9MRU5HVEhdXG4gICAgICApO1xuICAgIGNhc2UgVmFsaWRhdGlvbktleXMuU1RFUDpcbiAgICAgIHJldHVybiB6b2QubXVsdGlwbGVPZihcbiAgICAgICAgKHZhbHVlcyBhcyBTdGVwVmFsaWRhdG9yT3B0aW9ucylbVmFsaWRhdGlvbktleXMuU1RFUF1cbiAgICAgICk7XG4gICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5QQVRURVJOOlxuICAgIGNhc2UgVmFsaWRhdGlvbktleXMuVVJMOlxuICAgIGNhc2UgVmFsaWRhdGlvbktleXMuRU1BSUw6XG4gICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5QQVNTV09SRDpcbiAgICAgIHJldHVybiB6b2QucmVnZXgoXG4gICAgICAgIG5ldyBSZWdFeHAoXG4gICAgICAgICAgKHZhbHVlcyBhcyBQYXR0ZXJuVmFsaWRhdG9yT3B0aW9ucylbVmFsaWRhdGlvbktleXMuUEFUVEVSTl0gYXMgc3RyaW5nLFxuICAgICAgICAgIFwiZ1wiXG4gICAgICAgIClcbiAgICAgICk7XG4gICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5EQVRFOlxuICAgICAgcmV0dXJuIHpvZC5kYXRlKCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB6b2Q7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsVG9ab2Q8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogTSkge1xuICBjb25zdCByZXN1bHQ6IHsgW2tleTogc3RyaW5nXTogYW55IH0gPSB7fTtcblxuICBjb25zdCBwcm9wZXJ0aWVzID0gTW9kZWwuZ2V0QXR0cmlidXRlcyhtb2RlbCk7XG4gIGlmIChBcnJheS5pc0FycmF5KHByb3BlcnRpZXMpICYmICFwcm9wZXJ0aWVzLmxlbmd0aCkgcmV0dXJuIHoub2JqZWN0KHt9KTtcbiAgZm9yIChjb25zdCBwcm9wIG9mIHByb3BlcnRpZXMpIHtcbiAgICBpZiAoXG4gICAgICB0eXBlb2YgKG1vZGVsIGFzIGFueSlbcHJvcF0gPT09IFwiZnVuY3Rpb25cIiB8fFxuICAgICAgcHJvcC5zdGFydHNXaXRoKFwiX1wiKSB8fFxuICAgICAgcHJvcCA9PT0gXCJjb25zdHJ1Y3RvclwiXG4gICAgKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBjb25zdCBhbGxEZWNzID0gUmVmbGVjdGlvbi5nZXRQcm9wZXJ0eURlY29yYXRvcnMoXG4gICAgICBWYWxpZGF0aW9uS2V5cy5SRUZMRUNULFxuICAgICAgbW9kZWwsXG4gICAgICBwcm9wLFxuICAgICAgZmFsc2UsXG4gICAgICB0cnVlXG4gICAgKTtcblxuICAgIGNvbnN0IGRlY29yYXRvckRhdGEgPSBhbGxEZWNzLmRlY29yYXRvcnMucmVkdWNlKFxuICAgICAgKGFjY3VtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBlbCkgPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgcHJvcHMgfSA9IGVsO1xuICAgICAgICBpZiAoa2V5ID09PSBNb2RlbEtleXMuVFlQRSAmJiAhYWNjdW1bVmFsaWRhdGlvbktleXMuVFlQRV0pIHtcbiAgICAgICAgICBhY2N1bVtWYWxpZGF0aW9uS2V5cy5UWVBFXSA9IHtcbiAgICAgICAgICAgIGN1c3RvbVR5cGVzOiBbcHJvcHMubmFtZSBhcyBzdHJpbmddLFxuICAgICAgICAgICAgbWVzc2FnZTogREVGQVVMVF9FUlJPUl9NRVNTQUdFUy5UWVBFLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiZGVmaW5lcyB0aGUgYWNjZXB0ZWQgdHlwZXMgZm9yIHRoZSBhdHRyaWJ1dGVcIixcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGFjY3VtW2tleV0gPSBwcm9wcztcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYWNjdW07XG4gICAgICB9LFxuICAgICAge31cbiAgICApO1xuXG4gICAgaWYgKCFPYmplY3Qua2V5cyhkZWNvcmF0b3JEYXRhKS5sZW5ndGgpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGxldCB6b2Q6IGFueSA9IFpvZEFueTtcblxuICAgIGNvbnN0IHR5cGVEYXRhOiBUeXBlTWV0YWRhdGEgPSBkZWNvcmF0b3JEYXRhW1xuICAgICAgVmFsaWRhdGlvbktleXMuVFlQRVxuICAgIF0gYXMgVHlwZU1ldGFkYXRhO1xuXG4gICAgaWYgKCF0eXBlRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBNaXNzaW5nIHR5cGUgaW5mb3JtYXRpb25gKTtcbiAgICB9XG5cbiAgICB6b2QgPSB6b2RpZnkoXG4gICAgICAoQXJyYXkuaXNBcnJheSh0eXBlRGF0YS5jdXN0b21UeXBlcylcbiAgICAgICAgPyB0eXBlRGF0YS5jdXN0b21UeXBlc1xuICAgICAgICA6IFt0eXBlRGF0YS5jdXN0b21UeXBlc11cbiAgICAgICkubWFwKChjKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgYyA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gYygpO1xuICAgICAgICByZXR1cm4gYztcbiAgICAgIH0pLFxuICAgICAgZGVjb3JhdG9yRGF0YVtWYWxpZGF0aW9uS2V5cy5MSVNUXVxuICAgICAgICA/IHpvZGlmeShcbiAgICAgICAgICAgIChBcnJheS5pc0FycmF5KFxuICAgICAgICAgICAgICAoZGVjb3JhdG9yRGF0YVtWYWxpZGF0aW9uS2V5cy5MSVNUXSBhcyBMaXN0TWV0YWRhdGEpLmNsYXp6XG4gICAgICAgICAgICApXG4gICAgICAgICAgICAgID8gKGRlY29yYXRvckRhdGFbVmFsaWRhdGlvbktleXMuTElTVF0gYXMgTGlzdE1ldGFkYXRhKS5jbGF6elxuICAgICAgICAgICAgICA6IFsoZGVjb3JhdG9yRGF0YVtWYWxpZGF0aW9uS2V5cy5MSVNUXSBhcyBMaXN0TWV0YWRhdGEpLmNsYXp6XVxuICAgICAgICAgICAgKS5tYXAoKGMpID0+IHtcbiAgICAgICAgICAgICAgaWYgKHR5cGVvZiBjID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gYygpLm5hbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGMgYXMgc3RyaW5nO1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICApXG4gICAgICAgIDogWm9kQW55XG4gICAgKTtcblxuICAgIGZvciAoY29uc3QgW2tleSwgcHJvcHNdIG9mIE9iamVjdC5lbnRyaWVzKGRlY29yYXRvckRhdGEpLmZpbHRlcihcbiAgICAgIChba10pID0+ICFpc1Jlc2VydmVkS2V5KGspXG4gICAgKSkge1xuICAgICAgem9kID0gem9kaWZ5VmFsaWRhdGlvbih6b2QsIGtleSwgcHJvcHMpO1xuICAgIH1cblxuICAgIGlmICghZGVjb3JhdG9yRGF0YVtWYWxpZGF0aW9uS2V5cy5SRVFVSVJFRF0pIHtcbiAgICAgIHpvZCA9IHpvZC5vcHRpb25hbCgpO1xuICAgIH1cblxuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gTWV0YWRhdGEuZGVzY3JpcHRpb24oXG4gICAgICBtb2RlbC5jb25zdHJ1Y3RvciBhcyBhbnksXG4gICAgICBwcm9wIGFzIGFueVxuICAgICk7XG5cbiAgICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICAgIHpvZCA9IHpvZC5kZXNjcmliZShkZXNjcmlwdGlvbik7XG4gICAgfVxuXG4gICAgcmVzdWx0W3Byb3BdID0gem9kO1xuICB9XG5cbiAgY29uc3QgZGVzY3JpcHRpb24gPSBNZXRhZGF0YS5kZXNjcmlwdGlvbihtb2RlbC5jb25zdHJ1Y3RvciBhcyBhbnkpO1xuICBjb25zdCByZXMgPSB6Lm9iamVjdChyZXN1bHQpO1xuICBpZiAoZGVzY3JpcHRpb24pIHtcbiAgICByZXMuZGVzY3JpYmUoZGVzY3JpcHRpb24pO1xuICB9XG4gIHJldHVybiByZXM7XG59XG5cbmNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHosIFwiZnJvbVwiIGFzIGtleW9mIHR5cGVvZiB6KTtcblxuaWYgKCFkZXNjcmlwdG9yIHx8IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlKSB7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh6LCBcImZyb21cIiwge1xuICAgIHZhbHVlOiA8TSBleHRlbmRzIE1vZGVsPihtb2RlbDogQ29uc3RydWN0b3I8TT4pID0+IHtcbiAgICAgIGNvbnN0IG0gPSBuZXcgbW9kZWwoKTtcbiAgICAgIGlmICghTWV0YWRhdGEuY29uc3RyKG0uY29uc3RydWN0b3IgYXMgYW55KSkgTW9kZWwuZnJvbU1vZGVsKG0sIHt9KTtcbiAgICAgIHJldHVybiBtb2RlbFRvWm9kKG0pIGFzIGFueTtcbiAgICB9LFxuICB9KTtcbn1cbiJdfQ==
|
|
169
|
+
//# sourceMappingURL=overrides.js.map
|
package/lib/overrides.d.ts
CHANGED
|
@@ -2,4 +2,4 @@ import { Model, ValidatorOptions } from "@decaf-ts/decorator-validation";
|
|
|
2
2
|
import { z } from "zod";
|
|
3
3
|
export declare function zodify(type: string | string[], zz?: any): any;
|
|
4
4
|
export declare function zodifyValidation(zod: any, type: string, values: ValidatorOptions): any;
|
|
5
|
-
export declare function modelToZod<M extends Model>(model: M): z.ZodObject<{},
|
|
5
|
+
export declare function modelToZod<M extends Model>(model: M): z.ZodObject<{}, z.core.$strip>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"overrides.js","sourceRoot":"","sources":["../src/overrides.ts"],"names":[],"mappings":"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"}
|
package/lib/zod.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=zod.js.map
|
package/lib/zod.d.ts
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import type { Constructor, Model } from "@decaf-ts/decorator-validation";
|
|
2
|
-
import { ZodObject } from "zod";
|
|
2
|
+
import type { ZodArray, ZodBigInt, ZodBoolean, ZodDate, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodSet, ZodString, ZodTypeAny } from "zod";
|
|
3
|
+
type BaseZodSchemaFor<T> = T extends string ? ZodString : T extends number ? ZodNumber : T extends boolean ? ZodBoolean : T extends bigint ? ZodBigInt : T extends Date ? ZodDate : T extends any[] ? ZodArray<ZodTypeAny> : T extends Set<any> ? ZodSet<ZodTypeAny> : T extends Model ? ZodObject<any> : ZodTypeAny;
|
|
4
|
+
export type ZodSchemaFor<T> = undefined extends T ? ZodOptional<BaseZodSchemaFor<Exclude<T, undefined>>> : null extends T ? ZodNullable<BaseZodSchemaFor<NonNullable<T>>> : BaseZodSchemaFor<T>;
|
|
5
|
+
export type ZodShapeFor<M> = {
|
|
6
|
+
[K in keyof M as M[K] extends (...args: any[]) => any ? never : K]: ZodSchemaFor<M[K]>;
|
|
7
|
+
};
|
|
8
|
+
export type ZodFrom<M extends Model> = ZodObject<ZodShapeFor<M>>;
|
|
9
|
+
export type ListOf<T> = T[];
|
|
10
|
+
export type SetOf<T> = Set<T>;
|
|
3
11
|
declare module "zod" {
|
|
4
12
|
namespace z {
|
|
5
|
-
function from<M extends Model>(model: Constructor<M>):
|
|
13
|
+
function from<M extends Model>(model: Constructor<M>): ZodFrom<M>;
|
|
6
14
|
}
|
|
7
15
|
}
|
|
16
|
+
export {};
|
package/lib/zod.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zod.js","sourceRoot":"","sources":["../src/zod.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decaf-ts/as-zod",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Zod compatibility library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
},
|
|
10
10
|
"types": "lib/index.d.ts",
|
|
11
11
|
"scripts": {
|
|
12
|
-
"do-install": "
|
|
12
|
+
"do-install": "NPM_TOKEN=$(cat .npmtoken) npm install",
|
|
13
13
|
"update-dependencies": "PREFIX=\"decaf-ts\"; npm ls | grep \"$PREFIX\" | awk -F/ '{print $NF}' | sed 's/@.*//' | xargs -I package npm update @\"$PREFIX\"/package",
|
|
14
14
|
"update-scripts": "node ./bin/update-scripts.cjs",
|
|
15
15
|
"on-first-run": "node ./bin/update-scripts.cjs --boot",
|
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
"coverage": "rimraf ./workdocs/reports/data/*.json && npm run test:all -- --coverage --config=./workdocs/reports/jest.coverage.config.ts",
|
|
27
27
|
"lint": "eslint .",
|
|
28
28
|
"lint-fix": "eslint --fix .",
|
|
29
|
-
"prepare-pr": "npm run
|
|
29
|
+
"prepare-pr": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
|
|
30
30
|
"prepare-release": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
|
|
31
31
|
"release": "./bin/tag-release.sh",
|
|
32
32
|
"clean-publish": "npx clean-publish",
|
|
@@ -60,25 +60,16 @@
|
|
|
60
60
|
"dist"
|
|
61
61
|
],
|
|
62
62
|
"keywords": [
|
|
63
|
-
"
|
|
64
|
-
"
|
|
65
|
-
"
|
|
66
|
-
"
|
|
67
|
-
"mddocs",
|
|
68
|
-
"md",
|
|
69
|
-
"jsdoc",
|
|
70
|
-
"doc",
|
|
71
|
-
"docs",
|
|
72
|
-
"documentation",
|
|
73
|
-
"test",
|
|
74
|
-
"reports",
|
|
75
|
-
"confluence",
|
|
76
|
-
"ci/cd",
|
|
77
|
-
"ci",
|
|
78
|
-
"cd",
|
|
79
|
-
"template",
|
|
63
|
+
"zod",
|
|
64
|
+
"validation",
|
|
65
|
+
"schema",
|
|
66
|
+
"parsing",
|
|
80
67
|
"typescript",
|
|
81
|
-
"
|
|
68
|
+
"zod-adapter",
|
|
69
|
+
"decaf",
|
|
70
|
+
"runtime-validation",
|
|
71
|
+
"type-safety",
|
|
72
|
+
"data-validation"
|
|
82
73
|
],
|
|
83
74
|
"author": "Tiago Venceslau and Contributors",
|
|
84
75
|
"bugs": {
|
|
@@ -89,10 +80,6 @@
|
|
|
89
80
|
"@decaf-ts/logging": "latest",
|
|
90
81
|
"@decaf-ts/utils": "latest",
|
|
91
82
|
"@eslint/js": "^9.25.1",
|
|
92
|
-
"@rollup/plugin-commonjs": "^28.0.3",
|
|
93
|
-
"@rollup/plugin-json": "^6.1.0",
|
|
94
|
-
"@rollup/plugin-node-resolve": "^16.0.1",
|
|
95
|
-
"@rollup/plugin-typescript": "^12.1.2",
|
|
96
83
|
"@stylistic/eslint-plugin": "^4.2.0",
|
|
97
84
|
"@types/jest": "^29.5.14",
|
|
98
85
|
"clean-publish": "^5.1.0",
|
|
@@ -112,7 +99,6 @@
|
|
|
112
99
|
"npm-check-updates": "^18.0.0",
|
|
113
100
|
"prettier": "3.5.3",
|
|
114
101
|
"rimraf": "^6.0.1",
|
|
115
|
-
"rollup": "^4.40.0",
|
|
116
102
|
"ts-jest": "^29.3.2",
|
|
117
103
|
"ts-loader": "^9.5.2",
|
|
118
104
|
"ts-node": "^10.9.2",
|
|
@@ -123,7 +109,7 @@
|
|
|
123
109
|
"@decaf-ts/decoration": "latest",
|
|
124
110
|
"@decaf-ts/decorator-validation": "latest",
|
|
125
111
|
"@decaf-ts/reflection": "latest",
|
|
126
|
-
"zod": "^
|
|
112
|
+
"zod": "^4.1.12"
|
|
127
113
|
},
|
|
128
114
|
"license": "MIT"
|
|
129
115
|
}
|
package/dist/as-zod.esm.cjs
DELETED
|
@@ -1,167 +0,0 @@
|
|
|
1
|
-
import { Metadata } from '@decaf-ts/decoration';
|
|
2
|
-
import { ValidationKeys, ModelKeys, Model, DEFAULT_ERROR_MESSAGES, Primitives } from '@decaf-ts/decorator-validation';
|
|
3
|
-
import { z, ZodAny } from 'zod';
|
|
4
|
-
import { Reflection } from '@decaf-ts/reflection';
|
|
5
|
-
|
|
6
|
-
const ReservedKeys = [
|
|
7
|
-
ValidationKeys.REQUIRED,
|
|
8
|
-
ValidationKeys.TYPE,
|
|
9
|
-
ModelKeys.TYPE,
|
|
10
|
-
];
|
|
11
|
-
function isReservedKey(el) {
|
|
12
|
-
return ReservedKeys.includes(el);
|
|
13
|
-
}
|
|
14
|
-
function zodify(type, zz = ZodAny) {
|
|
15
|
-
type = typeof type === "string" ? [type] : type;
|
|
16
|
-
function innerZodify(type) {
|
|
17
|
-
switch (type.toLowerCase()) {
|
|
18
|
-
case Primitives.STRING:
|
|
19
|
-
return z.string();
|
|
20
|
-
case Primitives.NUMBER:
|
|
21
|
-
return z.number();
|
|
22
|
-
case Primitives.BIGINT:
|
|
23
|
-
return z.bigint();
|
|
24
|
-
case Primitives.BOOLEAN:
|
|
25
|
-
return z.boolean();
|
|
26
|
-
case ValidationKeys.DATE:
|
|
27
|
-
return z.date();
|
|
28
|
-
case Array.name.toLowerCase():
|
|
29
|
-
return z.array(zz);
|
|
30
|
-
case Set.name.toLowerCase():
|
|
31
|
-
return z.set(zz);
|
|
32
|
-
default: {
|
|
33
|
-
const m = Model.get(type);
|
|
34
|
-
if (!m) {
|
|
35
|
-
throw new Error(`Unzodifiable type: ${type}`);
|
|
36
|
-
}
|
|
37
|
-
try {
|
|
38
|
-
const zz = z.from(m);
|
|
39
|
-
return zz;
|
|
40
|
-
}
|
|
41
|
-
catch (e) {
|
|
42
|
-
throw new Error(`Failed to zodify model ${type}: ${e}`);
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
let zod;
|
|
48
|
-
for (const t of type) {
|
|
49
|
-
zod = zod ? zod.or(innerZodify(t)) : innerZodify(t);
|
|
50
|
-
}
|
|
51
|
-
return zod;
|
|
52
|
-
}
|
|
53
|
-
function zodifyValidation(zod, type, values) {
|
|
54
|
-
switch (type) {
|
|
55
|
-
case ValidationKeys.MIN:
|
|
56
|
-
return zod.min(values[ValidationKeys.MIN]);
|
|
57
|
-
case ValidationKeys.MIN_LENGTH:
|
|
58
|
-
return zod.min(values[ValidationKeys.MIN_LENGTH]);
|
|
59
|
-
case ValidationKeys.MAX:
|
|
60
|
-
return zod.max(values[ValidationKeys.MAX]);
|
|
61
|
-
case ValidationKeys.MAX_LENGTH:
|
|
62
|
-
return zod.max(values[ValidationKeys.MAX_LENGTH]);
|
|
63
|
-
case ValidationKeys.STEP:
|
|
64
|
-
return zod.multipleOf(values[ValidationKeys.STEP]);
|
|
65
|
-
case ValidationKeys.PATTERN:
|
|
66
|
-
case ValidationKeys.URL:
|
|
67
|
-
case ValidationKeys.EMAIL:
|
|
68
|
-
case ValidationKeys.PASSWORD:
|
|
69
|
-
return zod.regex(new RegExp(values[ValidationKeys.PATTERN], "g"));
|
|
70
|
-
case ValidationKeys.DATE:
|
|
71
|
-
return zod.date();
|
|
72
|
-
default:
|
|
73
|
-
return zod;
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
function modelToZod(model) {
|
|
77
|
-
const result = {};
|
|
78
|
-
const properties = Model.getAttributes(model);
|
|
79
|
-
if (Array.isArray(properties) && !properties.length)
|
|
80
|
-
return z.object({});
|
|
81
|
-
for (const prop of properties) {
|
|
82
|
-
if (typeof model[prop] === "function" ||
|
|
83
|
-
prop.startsWith("_") ||
|
|
84
|
-
prop === "constructor") {
|
|
85
|
-
continue;
|
|
86
|
-
}
|
|
87
|
-
const allDecs = Reflection.getPropertyDecorators(ValidationKeys.REFLECT, model, prop, false, true);
|
|
88
|
-
const decoratorData = allDecs.decorators.reduce((accum, el) => {
|
|
89
|
-
const { key, props } = el;
|
|
90
|
-
if (key === ModelKeys.TYPE && !accum[ValidationKeys.TYPE]) {
|
|
91
|
-
accum[ValidationKeys.TYPE] = {
|
|
92
|
-
customTypes: [props.name],
|
|
93
|
-
message: DEFAULT_ERROR_MESSAGES.TYPE,
|
|
94
|
-
description: "defines the accepted types for the attribute",
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
accum[key] = props;
|
|
99
|
-
}
|
|
100
|
-
return accum;
|
|
101
|
-
}, {});
|
|
102
|
-
if (!Object.keys(decoratorData).length) {
|
|
103
|
-
continue;
|
|
104
|
-
}
|
|
105
|
-
let zod = ZodAny;
|
|
106
|
-
const typeData = decoratorData[ValidationKeys.TYPE];
|
|
107
|
-
if (!typeData) {
|
|
108
|
-
throw new Error(`Missing type information`);
|
|
109
|
-
}
|
|
110
|
-
zod = zodify((Array.isArray(typeData.customTypes)
|
|
111
|
-
? typeData.customTypes
|
|
112
|
-
: [typeData.customTypes]).map((c) => {
|
|
113
|
-
if (typeof c === "function")
|
|
114
|
-
return c();
|
|
115
|
-
return c;
|
|
116
|
-
}), decoratorData[ValidationKeys.LIST]
|
|
117
|
-
? zodify((Array.isArray(decoratorData[ValidationKeys.LIST].clazz)
|
|
118
|
-
? decoratorData[ValidationKeys.LIST].clazz
|
|
119
|
-
: [decoratorData[ValidationKeys.LIST].clazz]).map((c) => {
|
|
120
|
-
if (typeof c === "function") {
|
|
121
|
-
return c().name;
|
|
122
|
-
}
|
|
123
|
-
return c;
|
|
124
|
-
}))
|
|
125
|
-
: ZodAny);
|
|
126
|
-
for (const [key, props] of Object.entries(decoratorData).filter(([k]) => !isReservedKey(k))) {
|
|
127
|
-
zod = zodifyValidation(zod, key, props);
|
|
128
|
-
}
|
|
129
|
-
if (!decoratorData[ValidationKeys.REQUIRED]) {
|
|
130
|
-
zod = zod.optional();
|
|
131
|
-
}
|
|
132
|
-
const description = Metadata.description(model.constructor, prop);
|
|
133
|
-
if (description) {
|
|
134
|
-
zod = zod.describe(description);
|
|
135
|
-
}
|
|
136
|
-
result[prop] = zod;
|
|
137
|
-
}
|
|
138
|
-
const description = Metadata.description(model.constructor);
|
|
139
|
-
const res = z.object(result);
|
|
140
|
-
if (description) {
|
|
141
|
-
res.describe(description);
|
|
142
|
-
}
|
|
143
|
-
return res;
|
|
144
|
-
}
|
|
145
|
-
const descriptor = Object.getOwnPropertyDescriptor(z, "from");
|
|
146
|
-
if (!descriptor || descriptor.configurable) {
|
|
147
|
-
Object.defineProperty(z, "from", {
|
|
148
|
-
value: (model) => {
|
|
149
|
-
const m = new model();
|
|
150
|
-
if (!Metadata.constr(m.constructor))
|
|
151
|
-
Model.fromModel(m, {});
|
|
152
|
-
return modelToZod(m);
|
|
153
|
-
},
|
|
154
|
-
});
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* @description Current version of the reflection package
|
|
159
|
-
* @summary Stores the semantic version number of the package
|
|
160
|
-
* @const VERSION
|
|
161
|
-
* @memberOf module:as-zod
|
|
162
|
-
*/
|
|
163
|
-
const VERSION = "0.0.13";
|
|
164
|
-
Metadata.registerLibrary("@decaf-ts/as-zod", VERSION);
|
|
165
|
-
|
|
166
|
-
export { VERSION, modelToZod, zodify, zodifyValidation };
|
|
167
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXMtem9kLmVzbS5janMiLCJzb3VyY2VzIjpbIi4uL3NyYy9vdmVycmlkZXMudHMiLCIuLi9zcmMvaW5kZXgudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgTW9kZWwsXG4gIE1vZGVsS2V5cyxcbiAgVHlwZU1ldGFkYXRhLFxuICBQcmltaXRpdmVzLFxuICBERUZBVUxUX0VSUk9SX01FU1NBR0VTLFxuICBWYWxpZGF0b3JPcHRpb25zLFxuICBNaW5MZW5ndGhWYWxpZGF0b3JPcHRpb25zLFxuICBNaW5WYWxpZGF0b3JPcHRpb25zLFxuICBNYXhWYWxpZGF0b3JPcHRpb25zLFxuICBNYXhMZW5ndGhWYWxpZGF0b3JPcHRpb25zLFxuICBTdGVwVmFsaWRhdG9yT3B0aW9ucyxcbiAgUGF0dGVyblZhbGlkYXRvck9wdGlvbnMsXG4gIExpc3RNZXRhZGF0YSxcbiAgQ29uc3RydWN0b3IsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IE1ldGFkYXRhIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0aW9uXCI7XG5pbXBvcnQgeyB6LCBab2RBbnkgfSBmcm9tIFwiem9kXCI7XG5pbXBvcnQgeyBSZWZsZWN0aW9uIH0gZnJvbSBcIkBkZWNhZi10cy9yZWZsZWN0aW9uXCI7XG5pbXBvcnQgeyBWYWxpZGF0aW9uS2V5cyB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcblxuY29uc3QgUmVzZXJ2ZWRLZXlzID0gW1xuICBWYWxpZGF0aW9uS2V5cy5SRVFVSVJFRCxcbiAgVmFsaWRhdGlvbktleXMuVFlQRSxcbiAgTW9kZWxLZXlzLlRZUEUsXG5dIGFzIGNvbnN0O1xuXG5mdW5jdGlvbiBpc1Jlc2VydmVkS2V5KGVsOiBzdHJpbmcpIHtcbiAgcmV0dXJuIFJlc2VydmVkS2V5cy5pbmNsdWRlcyhlbCBhcyBhbnkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gem9kaWZ5KHR5cGU6IHN0cmluZyB8IHN0cmluZ1tdLCB6ejogYW55ID0gWm9kQW55KSB7XG4gIHR5cGUgPSB0eXBlb2YgdHlwZSA9PT0gXCJzdHJpbmdcIiA/IFt0eXBlXSA6IHR5cGU7XG5cbiAgZnVuY3Rpb24gaW5uZXJab2RpZnkodHlwZTogc3RyaW5nKSB7XG4gICAgc3dpdGNoICh0eXBlLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGNhc2UgUHJpbWl0aXZlcy5TVFJJTkc6XG4gICAgICAgIHJldHVybiB6LnN0cmluZygpO1xuICAgICAgY2FzZSBQcmltaXRpdmVzLk5VTUJFUjpcbiAgICAgICAgcmV0dXJuIHoubnVtYmVyKCk7XG4gICAgICBjYXNlIFByaW1pdGl2ZXMuQklHSU5UOlxuICAgICAgICByZXR1cm4gei5iaWdpbnQoKTtcbiAgICAgIGNhc2UgUHJpbWl0aXZlcy5CT09MRUFOOlxuICAgICAgICByZXR1cm4gei5ib29sZWFuKCk7XG4gICAgICBjYXNlIFZhbGlkYXRpb25LZXlzLkRBVEU6XG4gICAgICAgIHJldHVybiB6LmRhdGUoKTtcbiAgICAgIGNhc2UgQXJyYXkubmFtZS50b0xvd2VyQ2FzZSgpOlxuICAgICAgICByZXR1cm4gei5hcnJheSh6eik7XG4gICAgICBjYXNlIFNldC5uYW1lLnRvTG93ZXJDYXNlKCk6XG4gICAgICAgIHJldHVybiB6LnNldCh6eik7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIGNvbnN0IG0gPSBNb2RlbC5nZXQodHlwZSk7XG4gICAgICAgIGlmICghbSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW56b2RpZmlhYmxlIHR5cGU6ICR7dHlwZX1gKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHp6ID0gei5mcm9tKG0pO1xuICAgICAgICAgIHJldHVybiB6ejtcbiAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHpvZGlmeSBtb2RlbCAke3R5cGV9OiAke2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsZXQgem9kOiBhbnk7XG4gIGZvciAoY29uc3QgdCBvZiB0eXBlKSB7XG4gICAgem9kID0gem9kID8gem9kLm9yKGlubmVyWm9kaWZ5KHQpKSA6IGlubmVyWm9kaWZ5KHQpO1xuICB9XG5cbiAgcmV0dXJuIHpvZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHpvZGlmeVZhbGlkYXRpb24oXG4gIHpvZDogYW55LFxuICB0eXBlOiBzdHJpbmcsXG4gIHZhbHVlczogVmFsaWRhdG9yT3B0aW9uc1xuKSB7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgVmFsaWRhdGlvbktleXMuTUlOOlxuICAgICAgcmV0dXJuIHpvZC5taW4oKHZhbHVlcyBhcyBNaW5WYWxpZGF0b3JPcHRpb25zKVtWYWxpZGF0aW9uS2V5cy5NSU5dKTtcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLk1JTl9MRU5HVEg6XG4gICAgICByZXR1cm4gem9kLm1pbihcbiAgICAgICAgKHZhbHVlcyBhcyBNaW5MZW5ndGhWYWxpZGF0b3JPcHRpb25zKVtWYWxpZGF0aW9uS2V5cy5NSU5fTEVOR1RIXVxuICAgICAgKTtcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLk1BWDpcbiAgICAgIHJldHVybiB6b2QubWF4KCh2YWx1ZXMgYXMgTWF4VmFsaWRhdG9yT3B0aW9ucylbVmFsaWRhdGlvbktleXMuTUFYXSk7XG4gICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5NQVhfTEVOR1RIOlxuICAgICAgcmV0dXJuIHpvZC5tYXgoXG4gICAgICAgICh2YWx1ZXMgYXMgTWF4TGVuZ3RoVmFsaWRhdG9yT3B0aW9ucylbVmFsaWRhdGlvbktleXMuTUFYX0xFTkdUSF1cbiAgICAgICk7XG4gICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5TVEVQOlxuICAgICAgcmV0dXJuIHpvZC5tdWx0aXBsZU9mKFxuICAgICAgICAodmFsdWVzIGFzIFN0ZXBWYWxpZGF0b3JPcHRpb25zKVtWYWxpZGF0aW9uS2V5cy5TVEVQXVxuICAgICAgKTtcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLlBBVFRFUk46XG4gICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5VUkw6XG4gICAgY2FzZSBWYWxpZGF0aW9uS2V5cy5FTUFJTDpcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLlBBU1NXT1JEOlxuICAgICAgcmV0dXJuIHpvZC5yZWdleChcbiAgICAgICAgbmV3IFJlZ0V4cChcbiAgICAgICAgICAodmFsdWVzIGFzIFBhdHRlcm5WYWxpZGF0b3JPcHRpb25zKVtWYWxpZGF0aW9uS2V5cy5QQVRURVJOXSBhcyBzdHJpbmcsXG4gICAgICAgICAgXCJnXCJcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICBjYXNlIFZhbGlkYXRpb25LZXlzLkRBVEU6XG4gICAgICByZXR1cm4gem9kLmRhdGUoKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIHpvZDtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxUb1pvZDxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBNKSB7XG4gIGNvbnN0IHJlc3VsdDogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuXG4gIGNvbnN0IHByb3BlcnRpZXMgPSBNb2RlbC5nZXRBdHRyaWJ1dGVzKG1vZGVsKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkocHJvcGVydGllcykgJiYgIXByb3BlcnRpZXMubGVuZ3RoKSByZXR1cm4gei5vYmplY3Qoe30pO1xuICBmb3IgKGNvbnN0IHByb3Agb2YgcHJvcGVydGllcykge1xuICAgIGlmIChcbiAgICAgIHR5cGVvZiAobW9kZWwgYXMgYW55KVtwcm9wXSA9PT0gXCJmdW5jdGlvblwiIHx8XG4gICAgICBwcm9wLnN0YXJ0c1dpdGgoXCJfXCIpIHx8XG4gICAgICBwcm9wID09PSBcImNvbnN0cnVjdG9yXCJcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbERlY3MgPSBSZWZsZWN0aW9uLmdldFByb3BlcnR5RGVjb3JhdG9ycyhcbiAgICAgIFZhbGlkYXRpb25LZXlzLlJFRkxFQ1QsXG4gICAgICBtb2RlbCxcbiAgICAgIHByb3AsXG4gICAgICBmYWxzZSxcbiAgICAgIHRydWVcbiAgICApO1xuXG4gICAgY29uc3QgZGVjb3JhdG9yRGF0YSA9IGFsbERlY3MuZGVjb3JhdG9ycy5yZWR1Y2UoXG4gICAgICAoYWNjdW06IFJlY29yZDxzdHJpbmcsIGFueT4sIGVsKSA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCBwcm9wcyB9ID0gZWw7XG4gICAgICAgIGlmIChrZXkgPT09IE1vZGVsS2V5cy5UWVBFICYmICFhY2N1bVtWYWxpZGF0aW9uS2V5cy5UWVBFXSkge1xuICAgICAgICAgIGFjY3VtW1ZhbGlkYXRpb25LZXlzLlRZUEVdID0ge1xuICAgICAgICAgICAgY3VzdG9tVHlwZXM6IFtwcm9wcy5uYW1lIGFzIHN0cmluZ10sXG4gICAgICAgICAgICBtZXNzYWdlOiBERUZBVUxUX0VSUk9SX01FU1NBR0VTLlRZUEUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCJkZWZpbmVzIHRoZSBhY2NlcHRlZCB0eXBlcyBmb3IgdGhlIGF0dHJpYnV0ZVwiLFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYWNjdW1ba2V5XSA9IHByb3BzO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2N1bTtcbiAgICAgIH0sXG4gICAgICB7fVxuICAgICk7XG5cbiAgICBpZiAoIU9iamVjdC5rZXlzKGRlY29yYXRvckRhdGEpLmxlbmd0aCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgbGV0IHpvZDogYW55ID0gWm9kQW55O1xuXG4gICAgY29uc3QgdHlwZURhdGE6IFR5cGVNZXRhZGF0YSA9IGRlY29yYXRvckRhdGFbXG4gICAgICBWYWxpZGF0aW9uS2V5cy5UWVBFXG4gICAgXSBhcyBUeXBlTWV0YWRhdGE7XG5cbiAgICBpZiAoIXR5cGVEYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgdHlwZSBpbmZvcm1hdGlvbmApO1xuICAgIH1cblxuICAgIHpvZCA9IHpvZGlmeShcbiAgICAgIChBcnJheS5pc0FycmF5KHR5cGVEYXRhLmN1c3RvbVR5cGVzKVxuICAgICAgICA/IHR5cGVEYXRhLmN1c3RvbVR5cGVzXG4gICAgICAgIDogW3R5cGVEYXRhLmN1c3RvbVR5cGVzXVxuICAgICAgKS5tYXAoKGMpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBjKCk7XG4gICAgICAgIHJldHVybiBjO1xuICAgICAgfSksXG4gICAgICBkZWNvcmF0b3JEYXRhW1ZhbGlkYXRpb25LZXlzLkxJU1RdXG4gICAgICAgID8gem9kaWZ5KFxuICAgICAgICAgICAgKEFycmF5LmlzQXJyYXkoXG4gICAgICAgICAgICAgIChkZWNvcmF0b3JEYXRhW1ZhbGlkYXRpb25LZXlzLkxJU1RdIGFzIExpc3RNZXRhZGF0YSkuY2xhenpcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgPyAoZGVjb3JhdG9yRGF0YVtWYWxpZGF0aW9uS2V5cy5MSVNUXSBhcyBMaXN0TWV0YWRhdGEpLmNsYXp6XG4gICAgICAgICAgICAgIDogWyhkZWNvcmF0b3JEYXRhW1ZhbGlkYXRpb25LZXlzLkxJU1RdIGFzIExpc3RNZXRhZGF0YSkuY2xhenpdXG4gICAgICAgICAgICApLm1hcCgoYykgPT4ge1xuICAgICAgICAgICAgICBpZiAodHlwZW9mIGMgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBjKCkubmFtZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gYyBhcyBzdHJpbmc7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgIClcbiAgICAgICAgOiBab2RBbnlcbiAgICApO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCBwcm9wc10gb2YgT2JqZWN0LmVudHJpZXMoZGVjb3JhdG9yRGF0YSkuZmlsdGVyKFxuICAgICAgKFtrXSkgPT4gIWlzUmVzZXJ2ZWRLZXkoaylcbiAgICApKSB7XG4gICAgICB6b2QgPSB6b2RpZnlWYWxpZGF0aW9uKHpvZCwga2V5LCBwcm9wcyk7XG4gICAgfVxuXG4gICAgaWYgKCFkZWNvcmF0b3JEYXRhW1ZhbGlkYXRpb25LZXlzLlJFUVVJUkVEXSkge1xuICAgICAgem9kID0gem9kLm9wdGlvbmFsKCk7XG4gICAgfVxuXG4gICAgY29uc3QgZGVzY3JpcHRpb24gPSBNZXRhZGF0YS5kZXNjcmlwdGlvbihcbiAgICAgIG1vZGVsLmNvbnN0cnVjdG9yIGFzIGFueSxcbiAgICAgIHByb3AgYXMgYW55XG4gICAgKTtcblxuICAgIGlmIChkZXNjcmlwdGlvbikge1xuICAgICAgem9kID0gem9kLmRlc2NyaWJlKGRlc2NyaXB0aW9uKTtcbiAgICB9XG5cbiAgICByZXN1bHRbcHJvcF0gPSB6b2Q7XG4gIH1cblxuICBjb25zdCBkZXNjcmlwdGlvbiA9IE1ldGFkYXRhLmRlc2NyaXB0aW9uKG1vZGVsLmNvbnN0cnVjdG9yIGFzIGFueSk7XG4gIGNvbnN0IHJlcyA9IHoub2JqZWN0KHJlc3VsdCk7XG4gIGlmIChkZXNjcmlwdGlvbikge1xuICAgIHJlcy5kZXNjcmliZShkZXNjcmlwdGlvbik7XG4gIH1cbiAgcmV0dXJuIHJlcztcbn1cblxuY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoeiwgXCJmcm9tXCIgYXMga2V5b2YgdHlwZW9mIHopO1xuXG5pZiAoIWRlc2NyaXB0b3IgfHwgZGVzY3JpcHRvci5jb25maWd1cmFibGUpIHtcbiAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHosIFwiZnJvbVwiLCB7XG4gICAgdmFsdWU6IDxNIGV4dGVuZHMgTW9kZWw+KG1vZGVsOiBDb25zdHJ1Y3RvcjxNPikgPT4ge1xuICAgICAgY29uc3QgbSA9IG5ldyBtb2RlbCgpO1xuICAgICAgaWYgKCFNZXRhZGF0YS5jb25zdHIobS5jb25zdHJ1Y3RvciBhcyBhbnkpKSBNb2RlbC5mcm9tTW9kZWwobSwge30pO1xuICAgICAgcmV0dXJuIG1vZGVsVG9ab2QobSkgYXMgYW55O1xuICAgIH0sXG4gIH0pO1xufVxuIiwiaW1wb3J0IHsgTWV0YWRhdGEgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRpb25cIjtcblxuZXhwb3J0ICogZnJvbSBcIi4vem9kXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vdmVycmlkZXNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gQ3VycmVudCB2ZXJzaW9uIG9mIHRoZSByZWZsZWN0aW9uIHBhY2thZ2VcbiAqIEBzdW1tYXJ5IFN0b3JlcyB0aGUgc2VtYW50aWMgdmVyc2lvbiBudW1iZXIgb2YgdGhlIHBhY2thZ2VcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOmFzLXpvZFxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcblxuTWV0YWRhdGEucmVnaXN0ZXJMaWJyYXJ5KFwiQGRlY2FmLXRzL2FzLXpvZFwiLCBWRVJTSU9OKTtcbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQXFCQSxNQUFNLFlBQVksR0FBRztBQUNuQixJQUFBLGNBQWMsQ0FBQyxRQUFRO0FBQ3ZCLElBQUEsY0FBYyxDQUFDLElBQUk7QUFDbkIsSUFBQSxTQUFTLENBQUMsSUFBSTtDQUNOO0FBRVYsU0FBUyxhQUFhLENBQUMsRUFBVSxFQUFBO0FBQy9CLElBQUEsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQVMsQ0FBQztBQUN6QztTQUVnQixNQUFNLENBQUMsSUFBdUIsRUFBRSxLQUFVLE1BQU0sRUFBQTtBQUM5RCxJQUFBLElBQUksR0FBRyxPQUFPLElBQUksS0FBSyxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJO0lBRS9DLFNBQVMsV0FBVyxDQUFDLElBQVksRUFBQTtBQUMvQixRQUFBLFFBQVEsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUN4QixLQUFLLFVBQVUsQ0FBQyxNQUFNO0FBQ3BC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
|