@decaf-ts/as-zod 1.3.0 → 1.4.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 +1 -1
- package/dist/as-zod.cjs +1 -1
- package/dist/as-zod.cjs.map +1 -1
- package/dist/as-zod.js +1 -1
- package/dist/as-zod.js.map +1 -1
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/overrides.d.ts +5 -2
- package/lib/esm/overrides.js +136 -70
- package/lib/esm/overrides.js.map +1 -1
- package/lib/esm/zod.d.ts +2 -1
- package/lib/index.cjs +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/overrides.cjs +135 -69
- package/lib/overrides.d.ts +5 -2
- package/lib/overrides.js.map +1 -1
- package/lib/zod.d.ts +2 -1
- package/package.json +2 -28
package/README.md
CHANGED
package/dist/as-zod.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e
|
|
1
|
+
var t,e;t=this,e=function(t,e,a,r){"use strict";const i=[a.ValidationKeys.REQUIRED,a.ValidationKeys.TYPE,a.ValidationKeys.DATE,a.ModelKeys.TYPE];class o extends a.AttributeBuilder{constructor(t,e,a,r,i){super(t,e,a),this.decoratorData=r,this.attributeDescription=i}safeInvoke(t){if("function"!=typeof t)return t;if(t.prototype)return t;try{return t()}catch{return t}}typeName(t){if("string"==typeof t)return t;if("function"==typeof t)return t.name||t.toString();if(t&&"object"==typeof t&&"name"in t){const e=t.name;if(e)return e}return t+""}normalizeTypes(t){return(Array.isArray(t)?t:[t]).map(t=>{const e=this.safeInvoke(t);return this.typeName(e)})}resolveListTypes(t){return(Array.isArray(t.clazz)?t.clazz:[t.clazz]).map(t=>{const e=this.safeInvoke(t);return this.typeName(e)})}buildSchema(){if(!Object.keys(this.decoratorData).length)return;const t=this.decoratorData[a.ValidationKeys.TYPE];if(!t)throw Error("Missing type information");let e=s(this.normalizeTypes(t.customTypes),this.decoratorData[a.ValidationKeys.LIST]?s(this.resolveListTypes(this.decoratorData[a.ValidationKeys.LIST])):r.ZodAny);for(const[t,a]of Object.entries(this.decoratorData).filter(([t])=>{return e=t,!i.includes(e);var e}))e=c(e,t,a);return this.decoratorData[a.ValidationKeys.REQUIRED]||(e=e.optional()),this.attributeDescription&&(e=e.describe(this.attributeDescription)),e}}class n extends a.ModelBuilder{constructor(t,e){super(),this.target=t,this.metadata=e}decoratorDataFor(t){const e={...(this.metadata.validation??{})[t]??{}};if(!e[a.ValidationKeys.TYPE]){const r=this.metadata.properties?.[t],i="function"==typeof r||"string"==typeof r?.name?r.name:void 0;i&&(e[a.ValidationKeys.TYPE]={customTypes:[i],message:a.DEFAULT_ERROR_MESSAGES.TYPE,description:"defines the accepted types for the attribute"})}return e}toZodObject(){const t={},i=a.Model.getAttributes(this.target);if(Array.isArray(i)&&i.length)for(const a of i){if("string"!=typeof a||"constructor"===a||a.startsWith("_"))continue;if("function"==typeof this.target[a])continue;const r=this.decoratorDataFor(a);if(!Object.keys(r).length)continue;const i=new o(this,a,this.metadata.properties?.[a],r,e.Metadata.description(this.target,a)??this.metadata.description?.[a]).buildSchema();i&&(t[a]=i)}const n=e.Metadata.description(this.target)??this.metadata.description?.class,s=r.z.object(t);return n?s.describe(n):s}}function s(t,e=r.ZodAny){function i(t){switch(t.toLowerCase()){case a.Primitives.STRING:return r.z.string();case a.Primitives.NUMBER:return r.z.number();case a.Primitives.BIGINT:return r.z.bigint();case a.Primitives.BOOLEAN:return r.z.boolean();case a.ValidationKeys.DATE:return r.z.date();case Array.name.toLowerCase():return r.z.array(e);case Set.name.toLowerCase():{const t=r.z.set(e);return void 0===t.valueSchema&&Object.defineProperty(t,"valueSchema",{get:()=>t._def?.valueType,enumerable:!1,configurable:!0}),t}default:{const e=a.Model.get(t);if(!e)throw Error("Unzodifiable type: "+t);try{return r.z.from(e)}catch(e){throw Error(`Failed to zodify model ${t}: ${e}`)}}}}let o;t="string"==typeof t?[t]:t;for(const e of t)o=o?o.or(i(e)):i(e);return o}function c(t,e,r){switch(e){case a.ValidationKeys.MIN:return t.min(r[a.ValidationKeys.MIN]);case a.ValidationKeys.MIN_LENGTH:return t.min(r[a.ValidationKeys.MIN_LENGTH]);case a.ValidationKeys.MAX:return t.max(r[a.ValidationKeys.MAX]);case a.ValidationKeys.MAX_LENGTH:return t.max(r[a.ValidationKeys.MAX_LENGTH]);case a.ValidationKeys.STEP:return t.multipleOf(r[a.ValidationKeys.STEP]);case a.ValidationKeys.PATTERN:case a.ValidationKeys.URL:case a.ValidationKeys.EMAIL:case a.ValidationKeys.PASSWORD:return t.regex(RegExp(r[a.ValidationKeys.PATTERN],"g"));case a.ValidationKeys.DATE:throw new TypeError("DATE validator cannot be applied as a refinement");default:return t}}function d(t){const r=t instanceof a.Model?t.constructor:t,i=e.Metadata.get(r);return new n(r,i??{validation:{},properties:{},description:{}}).toZodObject()}const u=Object.getOwnPropertyDescriptor(r.z,"from");u&&!u.configurable||Object.defineProperty(r.z,"from",{value:t=>d(t)});const l="##VERSION##";e.Metadata.registerLibrary("@decaf-ts/as-zod",l),t.VERSION=l,t.modelToZod=d,t.zodify=s,t.zodifyValidation=c},"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@decaf-ts/decoration"),require("@decaf-ts/decorator-validation"),require("zod")):"function"==typeof define&&define.amd?define(["exports","@decaf-ts/decoration","@decaf-ts/decorator-validation","zod"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self)["as-zod"]={},t.decafTsDecoration,t.decafTsDecoratorValidation,t.zod);
|
|
2
2
|
//# sourceMappingURL=as-zod.cjs.map
|
package/dist/as-zod.cjs.map
CHANGED
|
@@ -1 +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","
|
|
1
|
+
{"version":3,"file":"as-zod.cjs","sources":["../src/overrides.ts","../src/index.ts"],"sourcesContent":[null,null],"names":["ReservedKeys","ValidationKeys","REQUIRED","TYPE","DATE","ModelKeys","ZodAttributeBuilder","AttributeBuilder","constructor","parent","attr","declaredType","decoratorData","description","super","this","attributeDescription","safeInvoke","value","prototype","typeName","name","toString","String","normalizeTypes","input","Array","isArray","map","entry","resolved","resolveListTypes","listMeta","clazz","buildSchema","Object","keys","length","typeData","Error","zodSchema","zodify","customTypes","LIST","ZodAny","key","props","entries","filter","k","el","includes","zodifyValidation","optional","describe","ZodModelBuilder","ModelBuilder","target","metadata","decoratorDataFor","prop","validation","designType","properties","undefined","message","DEFAULT_ERROR_MESSAGES","toZodObject","result","Model","getAttributes","startsWith","schema","Metadata","class","objectSchema","z","object","type","zz","innerZodify","toLowerCase","Primitives","STRING","string","NUMBER","number","BIGINT","bigint","BOOLEAN","boolean","date","array","Set","setSchema","set","valueSchema","defineProperty","get","_def","valueType","enumerable","configurable","m","from","e","zod","t","or","values","MIN","min","MIN_LENGTH","MAX","max","MAX_LENGTH","STEP","multipleOf","PATTERN","URL","EMAIL","PASSWORD","regex","RegExp","TypeError","modelToZod","model","ctor","fullMeta","descriptor","getOwnPropertyDescriptor","VERSION","registerLibrary"],"mappings":"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"}
|
package/dist/as-zod.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{Metadata as
|
|
1
|
+
import{Metadata as t}from"@decaf-ts/decoration";import{ValidationKeys as e,ModelKeys as r,Model as o,ModelBuilder as a,DEFAULT_ERROR_MESSAGES as n,Primitives as s,AttributeBuilder as i}from"@decaf-ts/decorator-validation";import{z as c,ZodAny as u}from"zod";const f=[e.REQUIRED,e.TYPE,e.DATE,r.TYPE];class p extends i{constructor(t,e,r,o,a){super(t,e,r),this.decoratorData=o,this.attributeDescription=a}safeInvoke(t){if("function"!=typeof t)return t;if(t.prototype)return t;try{return t()}catch{return t}}typeName(t){if("string"==typeof t)return t;if("function"==typeof t)return t.name||t.toString();if(t&&"object"==typeof t&&"name"in t){const e=t.name;if(e)return e}return t+""}normalizeTypes(t){return(Array.isArray(t)?t:[t]).map(t=>{const e=this.safeInvoke(t);return this.typeName(e)})}resolveListTypes(t){return(Array.isArray(t.clazz)?t.clazz:[t.clazz]).map(t=>{const e=this.safeInvoke(t);return this.typeName(e)})}buildSchema(){if(!Object.keys(this.decoratorData).length)return;const t=this.decoratorData[e.TYPE];if(!t)throw Error("Missing type information");let r=h(this.normalizeTypes(t.customTypes),this.decoratorData[e.LIST]?h(this.resolveListTypes(this.decoratorData[e.LIST])):u);for(const[t,e]of Object.entries(this.decoratorData).filter(([t])=>{return e=t,!f.includes(e);var e}))r=m(r,t,e);return this.decoratorData[e.REQUIRED]||(r=r.optional()),this.attributeDescription&&(r=r.describe(this.attributeDescription)),r}}class d extends a{constructor(t,e){super(),this.target=t,this.metadata=e}decoratorDataFor(t){const r={...(this.metadata.validation??{})[t]??{}};if(!r[e.TYPE]){const o=this.metadata.properties?.[t],a="function"==typeof o||"string"==typeof o?.name?o.name:void 0;a&&(r[e.TYPE]={customTypes:[a],message:n.TYPE,description:"defines the accepted types for the attribute"})}return r}toZodObject(){const e={},r=o.getAttributes(this.target);if(Array.isArray(r)&&r.length)for(const o of r){if("string"!=typeof o||"constructor"===o||o.startsWith("_"))continue;if("function"==typeof this.target[o])continue;const r=this.decoratorDataFor(o);if(!Object.keys(r).length)continue;const a=new p(this,o,this.metadata.properties?.[o],r,t.description(this.target,o)??this.metadata.description?.[o]).buildSchema();a&&(e[o]=a)}const a=t.description(this.target)??this.metadata.description?.class,n=c.object(e);return a?n.describe(a):n}}function h(t,r=u){function a(t){switch(t.toLowerCase()){case s.STRING:return c.string();case s.NUMBER:return c.number();case s.BIGINT:return c.bigint();case s.BOOLEAN:return c.boolean();case e.DATE:return c.date();case Array.name.toLowerCase():return c.array(r);case Set.name.toLowerCase():{const t=c.set(r);return void 0===t.valueSchema&&Object.defineProperty(t,"valueSchema",{get:()=>t._def?.valueType,enumerable:!1,configurable:!0}),t}default:{const e=o.get(t);if(!e)throw Error("Unzodifiable type: "+t);try{return c.from(e)}catch(e){throw Error(`Failed to zodify model ${t}: ${e}`)}}}}let n;t="string"==typeof t?[t]:t;for(const e of t)n=n?n.or(a(e)):a(e);return n}function m(t,r,o){switch(r){case e.MIN:return t.min(o[e.MIN]);case e.MIN_LENGTH:return t.min(o[e.MIN_LENGTH]);case e.MAX:return t.max(o[e.MAX]);case e.MAX_LENGTH:return t.max(o[e.MAX_LENGTH]);case e.STEP:return t.multipleOf(o[e.STEP]);case e.PATTERN:case e.URL:case e.EMAIL:case e.PASSWORD:return t.regex(RegExp(o[e.PATTERN],"g"));case e.DATE:throw new TypeError("DATE validator cannot be applied as a refinement");default:return t}}function y(e){const r=e instanceof o?e.constructor:e,a=t.get(r);return new d(r,a??{validation:{},properties:{},description:{}}).toZodObject()}const l=Object.getOwnPropertyDescriptor(c,"from");l&&!l.configurable||Object.defineProperty(c,"from",{value:t=>y(t)});const T="##VERSION##";t.registerLibrary("@decaf-ts/as-zod",T);export{T as VERSION,y as modelToZod,h as zodify,m as zodifyValidation};
|
|
2
2
|
//# sourceMappingURL=as-zod.js.map
|
package/dist/as-zod.js.map
CHANGED
|
@@ -1 +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","
|
|
1
|
+
{"version":3,"file":"as-zod.js","sources":["../src/overrides.ts","../src/index.ts"],"sourcesContent":[null,null],"names":["ReservedKeys","ValidationKeys","REQUIRED","TYPE","DATE","ModelKeys","ZodAttributeBuilder","AttributeBuilder","constructor","parent","attr","declaredType","decoratorData","description","super","this","attributeDescription","safeInvoke","value","prototype","typeName","name","toString","String","normalizeTypes","input","Array","isArray","map","entry","resolved","resolveListTypes","listMeta","clazz","buildSchema","Object","keys","length","typeData","Error","zodSchema","zodify","customTypes","LIST","ZodAny","key","props","entries","filter","k","el","includes","zodifyValidation","optional","describe","ZodModelBuilder","ModelBuilder","target","metadata","decoratorDataFor","prop","validation","designType","properties","undefined","message","DEFAULT_ERROR_MESSAGES","toZodObject","result","Model","getAttributes","startsWith","schema","Metadata","class","objectSchema","z","object","type","zz","innerZodify","toLowerCase","Primitives","STRING","string","NUMBER","number","BIGINT","bigint","BOOLEAN","boolean","date","array","Set","setSchema","set","valueSchema","defineProperty","get","_def","valueType","enumerable","configurable","m","from","e","zod","t","or","values","MIN","min","MIN_LENGTH","MAX","max","MAX_LENGTH","STEP","multipleOf","PATTERN","URL","EMAIL","PASSWORD","regex","RegExp","TypeError","modelToZod","model","ctor","fullMeta","descriptor","getOwnPropertyDescriptor","VERSION","registerLibrary"],"mappings":"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"}
|
package/lib/esm/index.d.ts
CHANGED
package/lib/esm/index.js
CHANGED
package/lib/esm/overrides.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { Model, ValidatorOptions } from "@decaf-ts/decorator-validation";
|
|
1
|
+
import { Model, ValidatorOptions, ExtendedMetadata } from "@decaf-ts/decorator-validation";
|
|
2
|
+
import { Constructor } from "@decaf-ts/decoration";
|
|
2
3
|
import { z } from "zod";
|
|
3
4
|
export declare function zodify(type: string | string[], zz?: any): any;
|
|
4
5
|
export declare function zodifyValidation(zod: any, type: string, values: ValidatorOptions): any;
|
|
5
|
-
export declare function modelToZod<M extends Model
|
|
6
|
+
export declare function modelToZod<M extends Model, META extends ExtendedMetadata<M>>(model: M | Constructor<M>): z.ZodObject<{
|
|
7
|
+
[x: string]: any;
|
|
8
|
+
}, z.core.$strip>;
|
package/lib/esm/overrides.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { Model, ModelKeys, Primitives, DEFAULT_ERROR_MESSAGES, } from "@decaf-ts/decorator-validation";
|
|
1
|
+
import { Model, ModelBuilder, AttributeBuilder, ModelKeys, Primitives, DEFAULT_ERROR_MESSAGES, } from "@decaf-ts/decorator-validation";
|
|
2
2
|
import { Metadata } from "@decaf-ts/decoration";
|
|
3
3
|
import { z, ZodAny } from "zod";
|
|
4
|
-
import { Reflection } from "@decaf-ts/reflection";
|
|
5
4
|
import { ValidationKeys } from "@decaf-ts/decorator-validation";
|
|
6
5
|
const ReservedKeys = [
|
|
7
6
|
ValidationKeys.REQUIRED,
|
|
@@ -12,6 +11,136 @@ const ReservedKeys = [
|
|
|
12
11
|
function isReservedKey(el) {
|
|
13
12
|
return ReservedKeys.includes(el);
|
|
14
13
|
}
|
|
14
|
+
class ZodAttributeBuilder extends AttributeBuilder {
|
|
15
|
+
constructor(parent, attr, declaredType, decoratorData, description) {
|
|
16
|
+
super(parent, attr, declaredType);
|
|
17
|
+
this.decoratorData = decoratorData;
|
|
18
|
+
this.attributeDescription = description;
|
|
19
|
+
}
|
|
20
|
+
safeInvoke(value) {
|
|
21
|
+
if (typeof value !== "function") {
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
if (value.prototype) {
|
|
25
|
+
return value;
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
return value();
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return value;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
typeName(value) {
|
|
35
|
+
if (typeof value === "string") {
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
if (typeof value === "function") {
|
|
39
|
+
return value.name || value.toString();
|
|
40
|
+
}
|
|
41
|
+
if (value && typeof value === "object" && "name" in value) {
|
|
42
|
+
const name = value.name;
|
|
43
|
+
if (name)
|
|
44
|
+
return name;
|
|
45
|
+
}
|
|
46
|
+
return String(value);
|
|
47
|
+
}
|
|
48
|
+
normalizeTypes(input) {
|
|
49
|
+
const asArray = Array.isArray(input) ? input : [input];
|
|
50
|
+
return asArray.map((entry) => {
|
|
51
|
+
const resolved = this.safeInvoke(entry);
|
|
52
|
+
return this.typeName(resolved);
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
resolveListTypes(listMeta) {
|
|
56
|
+
const classes = Array.isArray(listMeta.clazz)
|
|
57
|
+
? listMeta.clazz
|
|
58
|
+
: [listMeta.clazz];
|
|
59
|
+
return classes.map((clazz) => {
|
|
60
|
+
const resolved = this.safeInvoke(clazz);
|
|
61
|
+
return this.typeName(resolved);
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
buildSchema() {
|
|
65
|
+
if (!Object.keys(this.decoratorData).length) {
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
const typeData = this.decoratorData[ValidationKeys.TYPE];
|
|
69
|
+
if (!typeData) {
|
|
70
|
+
throw new Error(`Missing type information`);
|
|
71
|
+
}
|
|
72
|
+
let zodSchema = zodify(this.normalizeTypes(typeData.customTypes), this.decoratorData[ValidationKeys.LIST]
|
|
73
|
+
? zodify(this.resolveListTypes(this.decoratorData[ValidationKeys.LIST]))
|
|
74
|
+
: ZodAny);
|
|
75
|
+
for (const [key, props] of Object.entries(this.decoratorData).filter(([k]) => !isReservedKey(k))) {
|
|
76
|
+
zodSchema = zodifyValidation(zodSchema, key, props);
|
|
77
|
+
}
|
|
78
|
+
if (!this.decoratorData[ValidationKeys.REQUIRED]) {
|
|
79
|
+
zodSchema = zodSchema.optional();
|
|
80
|
+
}
|
|
81
|
+
if (this.attributeDescription) {
|
|
82
|
+
zodSchema = zodSchema.describe(this.attributeDescription);
|
|
83
|
+
}
|
|
84
|
+
return zodSchema;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
class ZodModelBuilder extends ModelBuilder {
|
|
88
|
+
constructor(target, metadata) {
|
|
89
|
+
super();
|
|
90
|
+
this.target = target;
|
|
91
|
+
this.metadata = metadata;
|
|
92
|
+
}
|
|
93
|
+
decoratorDataFor(prop) {
|
|
94
|
+
const validations = (this.metadata.validation ??
|
|
95
|
+
{})[prop] ?? {};
|
|
96
|
+
const decoratorData = { ...validations };
|
|
97
|
+
if (!decoratorData[ValidationKeys.TYPE]) {
|
|
98
|
+
const designType = this.metadata.properties?.[prop];
|
|
99
|
+
const typeName = typeof designType === "function"
|
|
100
|
+
? designType.name
|
|
101
|
+
: typeof designType?.name === "string"
|
|
102
|
+
? designType.name
|
|
103
|
+
: undefined;
|
|
104
|
+
if (typeName) {
|
|
105
|
+
decoratorData[ValidationKeys.TYPE] = {
|
|
106
|
+
customTypes: [typeName],
|
|
107
|
+
message: DEFAULT_ERROR_MESSAGES.TYPE,
|
|
108
|
+
description: "defines the accepted types for the attribute",
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
return decoratorData;
|
|
113
|
+
}
|
|
114
|
+
toZodObject() {
|
|
115
|
+
const result = {};
|
|
116
|
+
const properties = Model.getAttributes(this.target);
|
|
117
|
+
if (Array.isArray(properties) && properties.length) {
|
|
118
|
+
for (const prop of properties) {
|
|
119
|
+
if (typeof prop !== "string" ||
|
|
120
|
+
prop === "constructor" ||
|
|
121
|
+
prop.startsWith("_")) {
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
if (typeof this.target[prop] === "function") {
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const decoratorData = this.decoratorDataFor(prop);
|
|
128
|
+
if (!Object.keys(decoratorData).length)
|
|
129
|
+
continue;
|
|
130
|
+
const attributeBuilder = new ZodAttributeBuilder(this, prop, this.metadata.properties?.[prop], decoratorData, Metadata.description(this.target, prop) ??
|
|
131
|
+
this.metadata.description?.[prop]);
|
|
132
|
+
const schema = attributeBuilder.buildSchema();
|
|
133
|
+
if (schema) {
|
|
134
|
+
result[prop] = schema;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
const description = Metadata.description(this.target) ??
|
|
139
|
+
this.metadata.description?.class;
|
|
140
|
+
const objectSchema = z.object(result);
|
|
141
|
+
return description ? objectSchema.describe(description) : objectSchema;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
15
144
|
export function zodify(type, zz = ZodAny) {
|
|
16
145
|
type = typeof type === "string" ? [type] : type;
|
|
17
146
|
function innerZodify(type) {
|
|
@@ -85,79 +214,16 @@ export function zodifyValidation(zod, type, values) {
|
|
|
85
214
|
}
|
|
86
215
|
}
|
|
87
216
|
export function modelToZod(model) {
|
|
88
|
-
const
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
for (const prop of properties) {
|
|
93
|
-
if (typeof model[prop] === "function" ||
|
|
94
|
-
prop.startsWith("_") ||
|
|
95
|
-
prop === "constructor") {
|
|
96
|
-
continue;
|
|
97
|
-
}
|
|
98
|
-
const allDecs = Reflection.getPropertyDecorators(ValidationKeys.REFLECT, model, prop, false, true);
|
|
99
|
-
const decoratorData = allDecs.decorators.reduce((accum, el) => {
|
|
100
|
-
const { key, props } = el;
|
|
101
|
-
if (key === ModelKeys.TYPE && !accum[ValidationKeys.TYPE]) {
|
|
102
|
-
accum[ValidationKeys.TYPE] = {
|
|
103
|
-
customTypes: [props.name],
|
|
104
|
-
message: DEFAULT_ERROR_MESSAGES.TYPE,
|
|
105
|
-
description: "defines the accepted types for the attribute",
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
accum[key] = props;
|
|
110
|
-
}
|
|
111
|
-
return accum;
|
|
112
|
-
}, {});
|
|
113
|
-
if (!Object.keys(decoratorData).length) {
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
116
|
-
let zod = ZodAny;
|
|
117
|
-
const typeData = decoratorData[ValidationKeys.TYPE];
|
|
118
|
-
if (!typeData) {
|
|
119
|
-
throw new Error(`Missing type information`);
|
|
120
|
-
}
|
|
121
|
-
zod = zodify((Array.isArray(typeData.customTypes)
|
|
122
|
-
? typeData.customTypes
|
|
123
|
-
: [typeData.customTypes]).map((c) => {
|
|
124
|
-
if (typeof c === "function")
|
|
125
|
-
return c();
|
|
126
|
-
return c;
|
|
127
|
-
}), decoratorData[ValidationKeys.LIST]
|
|
128
|
-
? zodify((Array.isArray(decoratorData[ValidationKeys.LIST].clazz)
|
|
129
|
-
? decoratorData[ValidationKeys.LIST].clazz
|
|
130
|
-
: [decoratorData[ValidationKeys.LIST].clazz]).map((c) => {
|
|
131
|
-
if (typeof c === "function") {
|
|
132
|
-
return c().name;
|
|
133
|
-
}
|
|
134
|
-
return c;
|
|
135
|
-
}))
|
|
136
|
-
: ZodAny);
|
|
137
|
-
for (const [key, props] of Object.entries(decoratorData).filter(([k]) => !isReservedKey(k))) {
|
|
138
|
-
zod = zodifyValidation(zod, key, props);
|
|
139
|
-
}
|
|
140
|
-
if (!decoratorData[ValidationKeys.REQUIRED]) {
|
|
141
|
-
zod = zod.optional();
|
|
142
|
-
}
|
|
143
|
-
const description = Metadata.description(model.constructor, prop);
|
|
144
|
-
if (description) {
|
|
145
|
-
zod = zod.describe(description);
|
|
146
|
-
}
|
|
147
|
-
result[prop] = zod;
|
|
148
|
-
}
|
|
149
|
-
const description = Metadata.description(model.constructor);
|
|
150
|
-
const res = z.object(result);
|
|
151
|
-
return description ? res.describe(description) : res;
|
|
217
|
+
const ctor = model instanceof Model ? model.constructor : model;
|
|
218
|
+
const fullMeta = Metadata.get(ctor);
|
|
219
|
+
const builder = new ZodModelBuilder(ctor, (fullMeta ?? { validation: {}, properties: {}, description: {} }));
|
|
220
|
+
return builder.toZodObject();
|
|
152
221
|
}
|
|
153
222
|
const descriptor = Object.getOwnPropertyDescriptor(z, "from");
|
|
154
223
|
if (!descriptor || descriptor.configurable) {
|
|
155
224
|
Object.defineProperty(z, "from", {
|
|
156
225
|
value: (model) => {
|
|
157
|
-
|
|
158
|
-
if (!Metadata.constr(m.constructor))
|
|
159
|
-
Model.fromModel(m, {});
|
|
160
|
-
return modelToZod(m);
|
|
226
|
+
return modelToZod(model);
|
|
161
227
|
},
|
|
162
228
|
});
|
|
163
229
|
}
|
package/lib/esm/overrides.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../src/overrides.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,SAAS,EAET,UAAU,EACV,sBAAsB,GAUvB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,QAAQ,
|
|
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,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Model } from "@decaf-ts/decorator-validation";
|
|
2
|
+
import type { Constructor } from "@decaf-ts/decoration";
|
|
2
3
|
import type { ZodArray, ZodBigInt, ZodBoolean, ZodDate, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodSet, ZodString, ZodTypeAny } from "zod";
|
|
3
4
|
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
5
|
export type ZodSchemaFor<T> = undefined extends T ? ZodOptional<BaseZodSchemaFor<Exclude<T, undefined>>> : null extends T ? ZodNullable<BaseZodSchemaFor<NonNullable<T>>> : BaseZodSchemaFor<T>;
|
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 = "1.3.1";
|
|
28
28
|
decoration_1.Metadata.registerLibrary("@decaf-ts/as-zod", exports.VERSION);
|
|
29
29
|
//# sourceMappingURL=index.js.map
|
package/lib/index.d.ts
CHANGED
package/lib/overrides.cjs
CHANGED
|
@@ -6,7 +6,6 @@ exports.modelToZod = modelToZod;
|
|
|
6
6
|
const decorator_validation_1 = require("@decaf-ts/decorator-validation");
|
|
7
7
|
const decoration_1 = require("@decaf-ts/decoration");
|
|
8
8
|
const zod_1 = require("zod");
|
|
9
|
-
const reflection_1 = require("@decaf-ts/reflection");
|
|
10
9
|
const decorator_validation_2 = require("@decaf-ts/decorator-validation");
|
|
11
10
|
const ReservedKeys = [
|
|
12
11
|
decorator_validation_2.ValidationKeys.REQUIRED,
|
|
@@ -17,6 +16,136 @@ const ReservedKeys = [
|
|
|
17
16
|
function isReservedKey(el) {
|
|
18
17
|
return ReservedKeys.includes(el);
|
|
19
18
|
}
|
|
19
|
+
class ZodAttributeBuilder extends decorator_validation_1.AttributeBuilder {
|
|
20
|
+
constructor(parent, attr, declaredType, decoratorData, description) {
|
|
21
|
+
super(parent, attr, declaredType);
|
|
22
|
+
this.decoratorData = decoratorData;
|
|
23
|
+
this.attributeDescription = description;
|
|
24
|
+
}
|
|
25
|
+
safeInvoke(value) {
|
|
26
|
+
if (typeof value !== "function") {
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
if (value.prototype) {
|
|
30
|
+
return value;
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
return value();
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return value;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
typeName(value) {
|
|
40
|
+
if (typeof value === "string") {
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
if (typeof value === "function") {
|
|
44
|
+
return value.name || value.toString();
|
|
45
|
+
}
|
|
46
|
+
if (value && typeof value === "object" && "name" in value) {
|
|
47
|
+
const name = value.name;
|
|
48
|
+
if (name)
|
|
49
|
+
return name;
|
|
50
|
+
}
|
|
51
|
+
return String(value);
|
|
52
|
+
}
|
|
53
|
+
normalizeTypes(input) {
|
|
54
|
+
const asArray = Array.isArray(input) ? input : [input];
|
|
55
|
+
return asArray.map((entry) => {
|
|
56
|
+
const resolved = this.safeInvoke(entry);
|
|
57
|
+
return this.typeName(resolved);
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
resolveListTypes(listMeta) {
|
|
61
|
+
const classes = Array.isArray(listMeta.clazz)
|
|
62
|
+
? listMeta.clazz
|
|
63
|
+
: [listMeta.clazz];
|
|
64
|
+
return classes.map((clazz) => {
|
|
65
|
+
const resolved = this.safeInvoke(clazz);
|
|
66
|
+
return this.typeName(resolved);
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
buildSchema() {
|
|
70
|
+
if (!Object.keys(this.decoratorData).length) {
|
|
71
|
+
return undefined;
|
|
72
|
+
}
|
|
73
|
+
const typeData = this.decoratorData[decorator_validation_2.ValidationKeys.TYPE];
|
|
74
|
+
if (!typeData) {
|
|
75
|
+
throw new Error(`Missing type information`);
|
|
76
|
+
}
|
|
77
|
+
let zodSchema = zodify(this.normalizeTypes(typeData.customTypes), this.decoratorData[decorator_validation_2.ValidationKeys.LIST]
|
|
78
|
+
? zodify(this.resolveListTypes(this.decoratorData[decorator_validation_2.ValidationKeys.LIST]))
|
|
79
|
+
: zod_1.ZodAny);
|
|
80
|
+
for (const [key, props] of Object.entries(this.decoratorData).filter(([k]) => !isReservedKey(k))) {
|
|
81
|
+
zodSchema = zodifyValidation(zodSchema, key, props);
|
|
82
|
+
}
|
|
83
|
+
if (!this.decoratorData[decorator_validation_2.ValidationKeys.REQUIRED]) {
|
|
84
|
+
zodSchema = zodSchema.optional();
|
|
85
|
+
}
|
|
86
|
+
if (this.attributeDescription) {
|
|
87
|
+
zodSchema = zodSchema.describe(this.attributeDescription);
|
|
88
|
+
}
|
|
89
|
+
return zodSchema;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
class ZodModelBuilder extends decorator_validation_1.ModelBuilder {
|
|
93
|
+
constructor(target, metadata) {
|
|
94
|
+
super();
|
|
95
|
+
this.target = target;
|
|
96
|
+
this.metadata = metadata;
|
|
97
|
+
}
|
|
98
|
+
decoratorDataFor(prop) {
|
|
99
|
+
const validations = (this.metadata.validation ??
|
|
100
|
+
{})[prop] ?? {};
|
|
101
|
+
const decoratorData = { ...validations };
|
|
102
|
+
if (!decoratorData[decorator_validation_2.ValidationKeys.TYPE]) {
|
|
103
|
+
const designType = this.metadata.properties?.[prop];
|
|
104
|
+
const typeName = typeof designType === "function"
|
|
105
|
+
? designType.name
|
|
106
|
+
: typeof designType?.name === "string"
|
|
107
|
+
? designType.name
|
|
108
|
+
: undefined;
|
|
109
|
+
if (typeName) {
|
|
110
|
+
decoratorData[decorator_validation_2.ValidationKeys.TYPE] = {
|
|
111
|
+
customTypes: [typeName],
|
|
112
|
+
message: decorator_validation_1.DEFAULT_ERROR_MESSAGES.TYPE,
|
|
113
|
+
description: "defines the accepted types for the attribute",
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return decoratorData;
|
|
118
|
+
}
|
|
119
|
+
toZodObject() {
|
|
120
|
+
const result = {};
|
|
121
|
+
const properties = decorator_validation_1.Model.getAttributes(this.target);
|
|
122
|
+
if (Array.isArray(properties) && properties.length) {
|
|
123
|
+
for (const prop of properties) {
|
|
124
|
+
if (typeof prop !== "string" ||
|
|
125
|
+
prop === "constructor" ||
|
|
126
|
+
prop.startsWith("_")) {
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
if (typeof this.target[prop] === "function") {
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
132
|
+
const decoratorData = this.decoratorDataFor(prop);
|
|
133
|
+
if (!Object.keys(decoratorData).length)
|
|
134
|
+
continue;
|
|
135
|
+
const attributeBuilder = new ZodAttributeBuilder(this, prop, this.metadata.properties?.[prop], decoratorData, decoration_1.Metadata.description(this.target, prop) ??
|
|
136
|
+
this.metadata.description?.[prop]);
|
|
137
|
+
const schema = attributeBuilder.buildSchema();
|
|
138
|
+
if (schema) {
|
|
139
|
+
result[prop] = schema;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const description = decoration_1.Metadata.description(this.target) ??
|
|
144
|
+
this.metadata.description?.class;
|
|
145
|
+
const objectSchema = zod_1.z.object(result);
|
|
146
|
+
return description ? objectSchema.describe(description) : objectSchema;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
20
149
|
function zodify(type, zz = zod_1.ZodAny) {
|
|
21
150
|
type = typeof type === "string" ? [type] : type;
|
|
22
151
|
function innerZodify(type) {
|
|
@@ -90,79 +219,16 @@ function zodifyValidation(zod, type, values) {
|
|
|
90
219
|
}
|
|
91
220
|
}
|
|
92
221
|
function modelToZod(model) {
|
|
93
|
-
const
|
|
94
|
-
const
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
for (const prop of properties) {
|
|
98
|
-
if (typeof model[prop] === "function" ||
|
|
99
|
-
prop.startsWith("_") ||
|
|
100
|
-
prop === "constructor") {
|
|
101
|
-
continue;
|
|
102
|
-
}
|
|
103
|
-
const allDecs = reflection_1.Reflection.getPropertyDecorators(decorator_validation_2.ValidationKeys.REFLECT, model, prop, false, true);
|
|
104
|
-
const decoratorData = allDecs.decorators.reduce((accum, el) => {
|
|
105
|
-
const { key, props } = el;
|
|
106
|
-
if (key === decorator_validation_1.ModelKeys.TYPE && !accum[decorator_validation_2.ValidationKeys.TYPE]) {
|
|
107
|
-
accum[decorator_validation_2.ValidationKeys.TYPE] = {
|
|
108
|
-
customTypes: [props.name],
|
|
109
|
-
message: decorator_validation_1.DEFAULT_ERROR_MESSAGES.TYPE,
|
|
110
|
-
description: "defines the accepted types for the attribute",
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
accum[key] = props;
|
|
115
|
-
}
|
|
116
|
-
return accum;
|
|
117
|
-
}, {});
|
|
118
|
-
if (!Object.keys(decoratorData).length) {
|
|
119
|
-
continue;
|
|
120
|
-
}
|
|
121
|
-
let zod = zod_1.ZodAny;
|
|
122
|
-
const typeData = decoratorData[decorator_validation_2.ValidationKeys.TYPE];
|
|
123
|
-
if (!typeData) {
|
|
124
|
-
throw new Error(`Missing type information`);
|
|
125
|
-
}
|
|
126
|
-
zod = zodify((Array.isArray(typeData.customTypes)
|
|
127
|
-
? typeData.customTypes
|
|
128
|
-
: [typeData.customTypes]).map((c) => {
|
|
129
|
-
if (typeof c === "function")
|
|
130
|
-
return c();
|
|
131
|
-
return c;
|
|
132
|
-
}), decoratorData[decorator_validation_2.ValidationKeys.LIST]
|
|
133
|
-
? zodify((Array.isArray(decoratorData[decorator_validation_2.ValidationKeys.LIST].clazz)
|
|
134
|
-
? decoratorData[decorator_validation_2.ValidationKeys.LIST].clazz
|
|
135
|
-
: [decoratorData[decorator_validation_2.ValidationKeys.LIST].clazz]).map((c) => {
|
|
136
|
-
if (typeof c === "function") {
|
|
137
|
-
return c().name;
|
|
138
|
-
}
|
|
139
|
-
return c;
|
|
140
|
-
}))
|
|
141
|
-
: zod_1.ZodAny);
|
|
142
|
-
for (const [key, props] of Object.entries(decoratorData).filter(([k]) => !isReservedKey(k))) {
|
|
143
|
-
zod = zodifyValidation(zod, key, props);
|
|
144
|
-
}
|
|
145
|
-
if (!decoratorData[decorator_validation_2.ValidationKeys.REQUIRED]) {
|
|
146
|
-
zod = zod.optional();
|
|
147
|
-
}
|
|
148
|
-
const description = decoration_1.Metadata.description(model.constructor, prop);
|
|
149
|
-
if (description) {
|
|
150
|
-
zod = zod.describe(description);
|
|
151
|
-
}
|
|
152
|
-
result[prop] = zod;
|
|
153
|
-
}
|
|
154
|
-
const description = decoration_1.Metadata.description(model.constructor);
|
|
155
|
-
const res = zod_1.z.object(result);
|
|
156
|
-
return description ? res.describe(description) : res;
|
|
222
|
+
const ctor = model instanceof decorator_validation_1.Model ? model.constructor : model;
|
|
223
|
+
const fullMeta = decoration_1.Metadata.get(ctor);
|
|
224
|
+
const builder = new ZodModelBuilder(ctor, (fullMeta ?? { validation: {}, properties: {}, description: {} }));
|
|
225
|
+
return builder.toZodObject();
|
|
157
226
|
}
|
|
158
227
|
const descriptor = Object.getOwnPropertyDescriptor(zod_1.z, "from");
|
|
159
228
|
if (!descriptor || descriptor.configurable) {
|
|
160
229
|
Object.defineProperty(zod_1.z, "from", {
|
|
161
230
|
value: (model) => {
|
|
162
|
-
|
|
163
|
-
if (!decoration_1.Metadata.constr(m.constructor))
|
|
164
|
-
decorator_validation_1.Model.fromModel(m, {});
|
|
165
|
-
return modelToZod(m);
|
|
231
|
+
return modelToZod(model);
|
|
166
232
|
},
|
|
167
233
|
});
|
|
168
234
|
}
|
package/lib/overrides.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import { Model, ValidatorOptions } from "@decaf-ts/decorator-validation";
|
|
1
|
+
import { Model, ValidatorOptions, ExtendedMetadata } from "@decaf-ts/decorator-validation";
|
|
2
|
+
import { Constructor } from "@decaf-ts/decoration";
|
|
2
3
|
import { z } from "zod";
|
|
3
4
|
export declare function zodify(type: string | string[], zz?: any): any;
|
|
4
5
|
export declare function zodifyValidation(zod: any, type: string, values: ValidatorOptions): any;
|
|
5
|
-
export declare function modelToZod<M extends Model
|
|
6
|
+
export declare function modelToZod<M extends Model, META extends ExtendedMetadata<M>>(model: M | Constructor<M>): z.ZodObject<{
|
|
7
|
+
[x: string]: any;
|
|
8
|
+
}, z.core.$strip>;
|
package/lib/overrides.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overrides.js","sourceRoot":"","sources":["../src/overrides.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"overrides.js","sourceRoot":"","sources":["../src/overrides.ts"],"names":[],"mappings":"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"}
|
package/lib/zod.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Model } from "@decaf-ts/decorator-validation";
|
|
2
|
+
import type { Constructor } from "@decaf-ts/decoration";
|
|
2
3
|
import type { ZodArray, ZodBigInt, ZodBoolean, ZodDate, ZodNullable, ZodNumber, ZodObject, ZodOptional, ZodSet, ZodString, ZodTypeAny } from "zod";
|
|
3
4
|
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
5
|
export type ZodSchemaFor<T> = undefined extends T ? ZodOptional<BaseZodSchemaFor<Exclude<T, undefined>>> : null extends T ? ZodNullable<BaseZodSchemaFor<NonNullable<T>>> : BaseZodSchemaFor<T>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@decaf-ts/as-zod",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Zod compatibility library",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"exports": {
|
|
@@ -77,33 +77,7 @@
|
|
|
77
77
|
},
|
|
78
78
|
"homepage": "https://github.com/decaf-ts/ts-workspace#readme",
|
|
79
79
|
"devDependencies": {
|
|
80
|
-
"@decaf-ts/
|
|
81
|
-
"@decaf-ts/utils": "latest",
|
|
82
|
-
"@eslint/js": "^9.25.1",
|
|
83
|
-
"@stylistic/eslint-plugin": "^4.2.0",
|
|
84
|
-
"@types/jest": "^29.5.14",
|
|
85
|
-
"clean-publish": "^5.1.0",
|
|
86
|
-
"dpdm": "^3.14.0",
|
|
87
|
-
"eslint": "^9.25.1",
|
|
88
|
-
"eslint-config-prettier": "^10.1.2",
|
|
89
|
-
"eslint-plugin-prettier": "^5.2.6",
|
|
90
|
-
"globals": "^16.0.0",
|
|
91
|
-
"jest": "^29.7.0",
|
|
92
|
-
"jest-html-reporters": "^3.1.7",
|
|
93
|
-
"jest-junit": "^16.0.0",
|
|
94
|
-
"jsdoc": "^4.0.4",
|
|
95
|
-
"jsdoc-mermaid": "^1.0.0",
|
|
96
|
-
"markdown-include": "^0.4.3",
|
|
97
|
-
"minimist": "^1.2.8",
|
|
98
|
-
"nodemon": "^3.1.9",
|
|
99
|
-
"npm-check-updates": "^18.0.0",
|
|
100
|
-
"prettier": "3.5.3",
|
|
101
|
-
"rimraf": "^6.0.1",
|
|
102
|
-
"ts-jest": "^29.3.2",
|
|
103
|
-
"ts-loader": "^9.5.2",
|
|
104
|
-
"ts-node": "^10.9.2",
|
|
105
|
-
"typescript": "^5.8.3",
|
|
106
|
-
"typescript-eslint": "^8.31.0"
|
|
80
|
+
"@decaf-ts/utils": "latest"
|
|
107
81
|
},
|
|
108
82
|
"peerDependencies": {
|
|
109
83
|
"@decaf-ts/decoration": "latest",
|