@vnodes/prop 0.0.23 → 0.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/prop-validation.d.ts +24 -0
- package/dist/lib/prop-validation.d.ts.map +1 -0
- package/dist/lib/prop-validation.js +92 -0
- package/dist/lib/prop-validation.js.map +1 -0
- package/dist/lib/prop.d.ts +1 -1
- package/dist/lib/prop.d.ts.map +1 -1
- package/dist/lib/prop.js +2 -45
- package/dist/lib/prop.js.map +1 -1
- package/package.json +5 -5
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from './lib/normalize-property-options.js';
|
|
|
6
6
|
export * from './lib/number-prop.js';
|
|
7
7
|
export * from './lib/prop.js';
|
|
8
8
|
export * from './lib/prop-options.js';
|
|
9
|
+
export * from './lib/prop-validation.js';
|
|
9
10
|
export * from './lib/string-format-prop.js';
|
|
10
11
|
export * from './lib/string-prop.js';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qCAAqC,CAAC;AACpD,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,qBAAqB,CAAC;AACpC,cAAc,iCAAiC,CAAC;AAChD,cAAc,wBAAwB,CAAC;AACvC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qCAAqC,CAAC;AACpD,cAAc,sBAAsB,CAAC;AACrC,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,0BAA0B,CAAC;AACzC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -7,6 +7,7 @@ export * from './lib/normalize-property-options.js';
|
|
|
7
7
|
export * from './lib/number-prop.js';
|
|
8
8
|
export * from './lib/prop.js';
|
|
9
9
|
export * from './lib/prop-options.js';
|
|
10
|
+
export * from './lib/prop-validation.js';
|
|
10
11
|
export * from './lib/string-format-prop.js';
|
|
11
12
|
export * from './lib/string-prop.js';
|
|
12
13
|
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// @index(['./**/*.ts', '!./**/*.{spec,test}.ts'], f => `export * from '${f.path}.js'`)\nexport * from './lib/array-prop.js';\nexport * from './lib/common-validation-pipe.js';\nexport * from './lib/is-class-type.js';\nexport * from './lib/is-enum-type.js';\nexport * from './lib/normalize-property-options.js';\nexport * from './lib/number-prop.js';\nexport * from './lib/prop.js';\nexport * from './lib/prop-options.js';\nexport * from './lib/string-format-prop.js';\nexport * from './lib/string-prop.js';\n"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,cAAc,sBAAsB;AACpC,cAAc,kCAAkC;AAChD,cAAc,yBAAyB;AACvC,cAAc,wBAAwB;AACtC,cAAc,sCAAsC;AACpD,cAAc,uBAAuB;AACrC,cAAc,gBAAgB;AAC9B,cAAc,wBAAwB;AACtC,cAAc,8BAA8B;AAC5C,cAAc,uBAAuB"}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// @index(['./**/*.ts', '!./**/*.{spec,test}.ts'], f => `export * from '${f.path}.js'`)\nexport * from './lib/array-prop.js';\nexport * from './lib/common-validation-pipe.js';\nexport * from './lib/is-class-type.js';\nexport * from './lib/is-enum-type.js';\nexport * from './lib/normalize-property-options.js';\nexport * from './lib/number-prop.js';\nexport * from './lib/prop.js';\nexport * from './lib/prop-options.js';\nexport * from './lib/prop-validation.js';\nexport * from './lib/string-format-prop.js';\nexport * from './lib/string-prop.js';\n"],"names":[],"mappings":"AAAA,uFAAuF;AACvF,cAAc,sBAAsB;AACpC,cAAc,kCAAkC;AAChD,cAAc,yBAAyB;AACvC,cAAc,wBAAwB;AACtC,cAAc,sCAAsC;AACpD,cAAc,uBAAuB;AACrC,cAAc,gBAAgB;AAC9B,cAAc,wBAAwB;AACtC,cAAc,2BAA2B;AACzC,cAAc,8BAA8B;AAC5C,cAAc,uBAAuB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { type ValidationOptions } from '@vnodes/nestjs/class-validator';
|
|
2
|
+
import type { PropOptions } from './prop-options.js';
|
|
3
|
+
/**
|
|
4
|
+
* ## Examples
|
|
5
|
+
* ```typescript
|
|
6
|
+
* \@PropValidation() value: string;
|
|
7
|
+
* \@PropValidation() value: number;
|
|
8
|
+
* \@PropValidation() value: boolean;
|
|
9
|
+
* \@PropValidation() value: Date;
|
|
10
|
+
* \@PropValidation({ type: CustomObject }) value: CustomObject;
|
|
11
|
+
* \@PropValidation({ type: [String] }) value: string[];
|
|
12
|
+
* \@PropValidation({ enum: EnumClss }) value: EnumClss;
|
|
13
|
+
* \@PropValidation({ type:[EnumClss] enum: EnumClss }) value: EnumClss;
|
|
14
|
+
*
|
|
15
|
+
* ## Notes
|
|
16
|
+
* - properties are optional by defualt if required is not set true
|
|
17
|
+
* ```
|
|
18
|
+
* @param options Open api property options
|
|
19
|
+
* @param validationOptions property validation options from class-validator
|
|
20
|
+
* @returns -- {@link PropertyDecorator}
|
|
21
|
+
*/
|
|
22
|
+
export declare function PropValidation(options?: PropOptions, validationOptions?: ValidationOptions): PropertyDecorator;
|
|
23
|
+
export declare function OptionalPropValidation(options?: PropOptions, validationOptions?: ValidationOptions): PropertyDecorator;
|
|
24
|
+
//# sourceMappingURL=prop-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prop-validation.d.ts","sourceRoot":"","sources":["../../src/lib/prop-validation.ts"],"names":[],"mappings":"AACA,OAAO,EAOH,KAAK,iBAAiB,EACzB,MAAM,gCAAgC,CAAC;AAMxC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,WAAgB,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAoDlH;AAED,wBAAgB,sBAAsB,CAClC,OAAO,GAAE,WAAgB,EACzB,iBAAiB,CAAC,EAAE,iBAAiB,GACtC,iBAAiB,CAUnB"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { Expose, Type } from '@vnodes/nestjs/class-transformer';
|
|
2
|
+
import { IsBoolean, IsDate, IsDefined, IsEnum, IsOptional, ValidateNested } from '@vnodes/nestjs/class-validator';
|
|
3
|
+
import { ArrayProp } from './array-prop.js';
|
|
4
|
+
import { isClassType } from './is-class-type.js';
|
|
5
|
+
import { normalizePropertyOptions } from './normalize-property-options.js';
|
|
6
|
+
import { NumberProp } from './number-prop.js';
|
|
7
|
+
import { StringProp } from './string-prop.js';
|
|
8
|
+
/**
|
|
9
|
+
* ## Examples
|
|
10
|
+
* ```typescript
|
|
11
|
+
* \@PropValidation() value: string;
|
|
12
|
+
* \@PropValidation() value: number;
|
|
13
|
+
* \@PropValidation() value: boolean;
|
|
14
|
+
* \@PropValidation() value: Date;
|
|
15
|
+
* \@PropValidation({ type: CustomObject }) value: CustomObject;
|
|
16
|
+
* \@PropValidation({ type: [String] }) value: string[];
|
|
17
|
+
* \@PropValidation({ enum: EnumClss }) value: EnumClss;
|
|
18
|
+
* \@PropValidation({ type:[EnumClss] enum: EnumClss }) value: EnumClss;
|
|
19
|
+
*
|
|
20
|
+
* ## Notes
|
|
21
|
+
* - properties are optional by defualt if required is not set true
|
|
22
|
+
* ```
|
|
23
|
+
* @param options Open api property options
|
|
24
|
+
* @param validationOptions property validation options from class-validator
|
|
25
|
+
* @returns -- {@link PropertyDecorator}
|
|
26
|
+
*/ export function PropValidation(options = {}, validationOptions) {
|
|
27
|
+
return (...args)=>{
|
|
28
|
+
options = normalizePropertyOptions(options, args[0], args[1]);
|
|
29
|
+
const decorators = new Set();
|
|
30
|
+
const add = (...propertyDecorators)=>{
|
|
31
|
+
for (const propertyDecorator of propertyDecorators){
|
|
32
|
+
decorators.add(propertyDecorator);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
if (options.enum) {
|
|
36
|
+
if (!Array.isArray(options.enum)) {
|
|
37
|
+
options.enum = Object.values(options.enum);
|
|
38
|
+
}
|
|
39
|
+
add(IsEnum(options.enum, {
|
|
40
|
+
...validationOptions,
|
|
41
|
+
message: `$property should be one of ${options.enum}`
|
|
42
|
+
}));
|
|
43
|
+
}
|
|
44
|
+
if (Array.isArray(options.type)) {
|
|
45
|
+
add(ArrayProp(options, validationOptions));
|
|
46
|
+
add(PropValidation({
|
|
47
|
+
...options.items,
|
|
48
|
+
type: options.type[0]
|
|
49
|
+
}, {
|
|
50
|
+
each: true
|
|
51
|
+
}));
|
|
52
|
+
} else if (options.type === String) {
|
|
53
|
+
add(StringProp(options, validationOptions));
|
|
54
|
+
} else if (options.type === Number) {
|
|
55
|
+
add(NumberProp(options, validationOptions));
|
|
56
|
+
} else if (options.type === Boolean) {
|
|
57
|
+
add(IsBoolean(validationOptions));
|
|
58
|
+
} else if (options.type === Date) {
|
|
59
|
+
add(IsDate(validationOptions));
|
|
60
|
+
} else if (isClassType(options.type)) {
|
|
61
|
+
options.type = new options.type();
|
|
62
|
+
add(Type(()=>options.type));
|
|
63
|
+
add(ValidateNested(validationOptions));
|
|
64
|
+
} else if (typeof options.type === 'function') {
|
|
65
|
+
add(Type(options.type));
|
|
66
|
+
add(ValidateNested(validationOptions));
|
|
67
|
+
}
|
|
68
|
+
if (!validationOptions) {
|
|
69
|
+
add(Expose());
|
|
70
|
+
if (options.required === true) {
|
|
71
|
+
add(IsDefined(validationOptions));
|
|
72
|
+
} else {
|
|
73
|
+
add(IsOptional(validationOptions));
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
for (const decorator of [
|
|
77
|
+
...decorators
|
|
78
|
+
]){
|
|
79
|
+
decorator(...args);
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export function OptionalPropValidation(options = {}, validationOptions) {
|
|
84
|
+
return (...args)=>{
|
|
85
|
+
PropValidation({
|
|
86
|
+
...options,
|
|
87
|
+
required: false
|
|
88
|
+
}, validationOptions)(...args);
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
//# sourceMappingURL=prop-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/lib/prop-validation.ts"],"sourcesContent":["import { type ClassConstructor, Expose, Type } from '@vnodes/nestjs/class-transformer';\nimport {\n IsBoolean,\n IsDate,\n IsDefined,\n IsEnum,\n IsOptional,\n ValidateNested,\n type ValidationOptions,\n} from '@vnodes/nestjs/class-validator';\nimport type { Any } from '@vnodes/types';\nimport { ArrayProp } from './array-prop.js';\nimport { isClassType } from './is-class-type.js';\nimport { normalizePropertyOptions } from './normalize-property-options.js';\nimport { NumberProp } from './number-prop.js';\nimport type { PropOptions } from './prop-options.js';\nimport { StringProp } from './string-prop.js';\n\n/**\n * ## Examples\n * ```typescript\n * \\@PropValidation() value: string;\n * \\@PropValidation() value: number;\n * \\@PropValidation() value: boolean;\n * \\@PropValidation() value: Date;\n * \\@PropValidation({ type: CustomObject }) value: CustomObject;\n * \\@PropValidation({ type: [String] }) value: string[];\n * \\@PropValidation({ enum: EnumClss }) value: EnumClss;\n * \\@PropValidation({ type:[EnumClss] enum: EnumClss }) value: EnumClss;\n *\n * ## Notes\n * - properties are optional by defualt if required is not set true\n * ```\n * @param options Open api property options\n * @param validationOptions property validation options from class-validator\n * @returns -- {@link PropertyDecorator}\n */\nexport function PropValidation(options: PropOptions = {}, validationOptions?: ValidationOptions): PropertyDecorator {\n return (...args) => {\n options = normalizePropertyOptions(options, args[0], args[1]);\n\n const decorators = new Set<PropertyDecorator>();\n const add = (...propertyDecorators: PropertyDecorator[]) => {\n for (const propertyDecorator of propertyDecorators) {\n decorators.add(propertyDecorator);\n }\n };\n\n if (options.enum) {\n if (!Array.isArray(options.enum)) {\n options.enum = Object.values(options.enum);\n }\n add(IsEnum(options.enum, { ...validationOptions, message: `$property should be one of ${options.enum}` }));\n }\n\n if (Array.isArray(options.type)) {\n add(ArrayProp(options, validationOptions));\n add(PropValidation({ ...options.items, type: options.type[0] } as Any, { each: true }));\n } else if (options.type === String) {\n add(StringProp(options, validationOptions));\n } else if (options.type === Number) {\n add(NumberProp(options, validationOptions));\n } else if (options.type === Boolean) {\n add(IsBoolean(validationOptions));\n } else if (options.type === Date) {\n add(IsDate(validationOptions));\n } else if (isClassType(options.type)) {\n options.type = new (options.type as Any)();\n add(Type(() => options.type as ClassConstructor<unknown>));\n add(ValidateNested(validationOptions));\n } else if (typeof options.type === 'function') {\n add(Type(options.type as () => ClassConstructor<Any>));\n add(ValidateNested(validationOptions));\n }\n\n if (!validationOptions) {\n add(Expose());\n\n if (options.required === true) {\n add(IsDefined(validationOptions));\n } else {\n add(IsOptional(validationOptions));\n }\n }\n\n for (const decorator of [...decorators]) {\n decorator(...args);\n }\n };\n}\n\nexport function OptionalPropValidation(\n options: PropOptions = {},\n validationOptions?: ValidationOptions,\n): PropertyDecorator {\n return (...args) => {\n PropValidation(\n {\n ...options,\n required: false,\n } as PropOptions,\n validationOptions,\n )(...args);\n };\n}\n"],"names":["Expose","Type","IsBoolean","IsDate","IsDefined","IsEnum","IsOptional","ValidateNested","ArrayProp","isClassType","normalizePropertyOptions","NumberProp","StringProp","PropValidation","options","validationOptions","args","decorators","Set","add","propertyDecorators","propertyDecorator","enum","Array","isArray","Object","values","message","type","items","each","String","Number","Boolean","Date","required","decorator","OptionalPropValidation"],"mappings":"AAAA,SAAgCA,MAAM,EAAEC,IAAI,QAAQ,mCAAmC;AACvF,SACIC,SAAS,EACTC,MAAM,EACNC,SAAS,EACTC,MAAM,EACNC,UAAU,EACVC,cAAc,QAEX,iCAAiC;AAExC,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,WAAW,QAAQ,qBAAqB;AACjD,SAASC,wBAAwB,QAAQ,kCAAkC;AAC3E,SAASC,UAAU,QAAQ,mBAAmB;AAE9C,SAASC,UAAU,QAAQ,mBAAmB;AAE9C;;;;;;;;;;;;;;;;;;CAkBC,GACD,OAAO,SAASC,eAAeC,UAAuB,CAAC,CAAC,EAAEC,iBAAqC;IAC3F,OAAO,CAAC,GAAGC;QACPF,UAAUJ,yBAAyBI,SAASE,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,EAAE;QAE5D,MAAMC,aAAa,IAAIC;QACvB,MAAMC,MAAM,CAAC,GAAGC;YACZ,KAAK,MAAMC,qBAAqBD,mBAAoB;gBAChDH,WAAWE,GAAG,CAACE;YACnB;QACJ;QAEA,IAAIP,QAAQQ,IAAI,EAAE;YACd,IAAI,CAACC,MAAMC,OAAO,CAACV,QAAQQ,IAAI,GAAG;gBAC9BR,QAAQQ,IAAI,GAAGG,OAAOC,MAAM,CAACZ,QAAQQ,IAAI;YAC7C;YACAH,IAAId,OAAOS,QAAQQ,IAAI,EAAE;gBAAE,GAAGP,iBAAiB;gBAAEY,SAAS,CAAC,2BAA2B,EAAEb,QAAQQ,IAAI,EAAE;YAAC;QAC3G;QAEA,IAAIC,MAAMC,OAAO,CAACV,QAAQc,IAAI,GAAG;YAC7BT,IAAIX,UAAUM,SAASC;YACvBI,IAAIN,eAAe;gBAAE,GAAGC,QAAQe,KAAK;gBAAED,MAAMd,QAAQc,IAAI,CAAC,EAAE;YAAC,GAAU;gBAAEE,MAAM;YAAK;QACxF,OAAO,IAAIhB,QAAQc,IAAI,KAAKG,QAAQ;YAChCZ,IAAIP,WAAWE,SAASC;QAC5B,OAAO,IAAID,QAAQc,IAAI,KAAKI,QAAQ;YAChCb,IAAIR,WAAWG,SAASC;QAC5B,OAAO,IAAID,QAAQc,IAAI,KAAKK,SAAS;YACjCd,IAAIjB,UAAUa;QAClB,OAAO,IAAID,QAAQc,IAAI,KAAKM,MAAM;YAC9Bf,IAAIhB,OAAOY;QACf,OAAO,IAAIN,YAAYK,QAAQc,IAAI,GAAG;YAClCd,QAAQc,IAAI,GAAG,IAAKd,QAAQc,IAAI;YAChCT,IAAIlB,KAAK,IAAMa,QAAQc,IAAI;YAC3BT,IAAIZ,eAAeQ;QACvB,OAAO,IAAI,OAAOD,QAAQc,IAAI,KAAK,YAAY;YAC3CT,IAAIlB,KAAKa,QAAQc,IAAI;YACrBT,IAAIZ,eAAeQ;QACvB;QAEA,IAAI,CAACA,mBAAmB;YACpBI,IAAInB;YAEJ,IAAIc,QAAQqB,QAAQ,KAAK,MAAM;gBAC3BhB,IAAIf,UAAUW;YAClB,OAAO;gBACHI,IAAIb,WAAWS;YACnB;QACJ;QAEA,KAAK,MAAMqB,aAAa;eAAInB;SAAW,CAAE;YACrCmB,aAAapB;QACjB;IACJ;AACJ;AAEA,OAAO,SAASqB,uBACZvB,UAAuB,CAAC,CAAC,EACzBC,iBAAqC;IAErC,OAAO,CAAC,GAAGC;QACPH,eACI;YACI,GAAGC,OAAO;YACVqB,UAAU;QACd,GACApB,sBACCC;IACT;AACJ"}
|
package/dist/lib/prop.d.ts
CHANGED
package/dist/lib/prop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prop.d.ts","sourceRoot":"","sources":["../../src/lib/prop.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prop.d.ts","sourceRoot":"","sources":["../../src/lib/prop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,IAAI,CAAC,OAAO,GAAE,WAAgB,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAuBxG;AAED,wBAAgB,YAAY,CAAC,OAAO,GAAE,WAAgB,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,CAUhH"}
|
package/dist/lib/prop.js
CHANGED
|
@@ -1,11 +1,6 @@
|
|
|
1
|
-
import { Expose, Type } from '@vnodes/nestjs/class-transformer';
|
|
2
|
-
import { IsBoolean, IsDate, IsDefined, IsEnum, IsOptional, ValidateNested } from '@vnodes/nestjs/class-validator';
|
|
3
1
|
import { ApiProperty } from '@vnodes/nestjs/swagger';
|
|
4
|
-
import { ArrayProp } from './array-prop.js';
|
|
5
|
-
import { isClassType } from './is-class-type.js';
|
|
6
2
|
import { normalizePropertyOptions } from './normalize-property-options.js';
|
|
7
|
-
import {
|
|
8
|
-
import { StringProp } from './string-prop.js';
|
|
3
|
+
import { PropValidation } from './prop-validation.js';
|
|
9
4
|
/**
|
|
10
5
|
* ## Examples
|
|
11
6
|
* ```typescript
|
|
@@ -34,50 +29,12 @@ import { StringProp } from './string-prop.js';
|
|
|
34
29
|
decorators.add(propertyDecorator);
|
|
35
30
|
}
|
|
36
31
|
};
|
|
37
|
-
|
|
38
|
-
if (!Array.isArray(options.enum)) {
|
|
39
|
-
options.enum = Object.values(options.enum);
|
|
40
|
-
}
|
|
41
|
-
add(IsEnum(options.enum, {
|
|
42
|
-
...validationOptions,
|
|
43
|
-
message: `$property should be one of ${options.enum}`
|
|
44
|
-
}));
|
|
45
|
-
}
|
|
46
|
-
if (Array.isArray(options.type)) {
|
|
47
|
-
add(ArrayProp(options, validationOptions));
|
|
48
|
-
add(Prop({
|
|
49
|
-
...options.items,
|
|
50
|
-
type: options.type[0]
|
|
51
|
-
}, {
|
|
52
|
-
each: true
|
|
53
|
-
}));
|
|
54
|
-
} else if (options.type === String) {
|
|
55
|
-
add(StringProp(options, validationOptions));
|
|
56
|
-
} else if (options.type === Number) {
|
|
57
|
-
add(NumberProp(options, validationOptions));
|
|
58
|
-
} else if (options.type === Boolean) {
|
|
59
|
-
add(IsBoolean(validationOptions));
|
|
60
|
-
} else if (options.type === Date) {
|
|
61
|
-
add(IsDate(validationOptions));
|
|
62
|
-
} else if (isClassType(options.type)) {
|
|
63
|
-
options.type = new options.type();
|
|
64
|
-
add(Type(()=>options.type));
|
|
65
|
-
add(ValidateNested(validationOptions));
|
|
66
|
-
} else if (typeof options.type === 'function') {
|
|
67
|
-
add(Type(options.type));
|
|
68
|
-
add(ValidateNested(validationOptions));
|
|
69
|
-
}
|
|
32
|
+
add(PropValidation(options, validationOptions));
|
|
70
33
|
if (!validationOptions) {
|
|
71
34
|
add(ApiProperty({
|
|
72
35
|
...options,
|
|
73
36
|
type: safeType
|
|
74
37
|
}));
|
|
75
|
-
add(Expose());
|
|
76
|
-
if (options.required === true) {
|
|
77
|
-
add(IsDefined(validationOptions));
|
|
78
|
-
} else {
|
|
79
|
-
add(IsOptional(validationOptions));
|
|
80
|
-
}
|
|
81
38
|
}
|
|
82
39
|
for (const decorator of [
|
|
83
40
|
...decorators
|
package/dist/lib/prop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/lib/prop.ts"],"sourcesContent":["import
|
|
1
|
+
{"version":3,"sources":["../../src/lib/prop.ts"],"sourcesContent":["import type { ValidationOptions } from '@vnodes/nestjs/class-validator';\nimport { type ApiPropertyOptions as __ApiPropertyOptions, ApiProperty } from '@vnodes/nestjs/swagger';\nimport { normalizePropertyOptions } from './normalize-property-options.js';\nimport type { PropOptions } from './prop-options.js';\nimport { PropValidation } from './prop-validation.js';\n\n/**\n * ## Examples\n * ```typescript\n * \\@Prop() value: string;\n * \\@Prop() value: number;\n * \\@Prop() value: boolean;\n * \\@Prop() value: Date;\n * \\@Prop({ type: CustomObject }) value: CustomObject;\n * \\@Prop({ type: [String] }) value: string[];\n * \\@Prop({ enum: EnumClss }) value: EnumClss;\n * \\@Prop({ type:[EnumClss] enum: EnumClss }) value: EnumClss;\n *\n * ## Notes\n * - properties are optional by defualt if required is not set true\n * ```\n * @param options Open api property options\n * @param validationOptions property validation options from class-validator\n * @returns -- {@link PropertyDecorator}\n */\nexport function Prop(options: PropOptions = {}, validationOptions?: ValidationOptions): PropertyDecorator {\n return (...args) => {\n options = normalizePropertyOptions(options, args[0], args[1]);\n\n const safeType = options.type;\n\n const decorators = new Set<PropertyDecorator>();\n const add = (...propertyDecorators: PropertyDecorator[]) => {\n for (const propertyDecorator of propertyDecorators) {\n decorators.add(propertyDecorator);\n }\n };\n\n add(PropValidation(options, validationOptions));\n\n if (!validationOptions) {\n add(ApiProperty({ ...options, type: safeType } as __ApiPropertyOptions));\n }\n\n for (const decorator of [...decorators]) {\n decorator(...args);\n }\n };\n}\n\nexport function OptionalProp(options: PropOptions = {}, validationOptions?: ValidationOptions): PropertyDecorator {\n return (...args) => {\n Prop(\n {\n ...options,\n required: false,\n } as PropOptions,\n validationOptions,\n )(...args);\n };\n}\n"],"names":["ApiProperty","normalizePropertyOptions","PropValidation","Prop","options","validationOptions","args","safeType","type","decorators","Set","add","propertyDecorators","propertyDecorator","decorator","OptionalProp","required"],"mappings":"AACA,SAA0DA,WAAW,QAAQ,yBAAyB;AACtG,SAASC,wBAAwB,QAAQ,kCAAkC;AAE3E,SAASC,cAAc,QAAQ,uBAAuB;AAEtD;;;;;;;;;;;;;;;;;;CAkBC,GACD,OAAO,SAASC,KAAKC,UAAuB,CAAC,CAAC,EAAEC,iBAAqC;IACjF,OAAO,CAAC,GAAGC;QACPF,UAAUH,yBAAyBG,SAASE,IAAI,CAAC,EAAE,EAAEA,IAAI,CAAC,EAAE;QAE5D,MAAMC,WAAWH,QAAQI,IAAI;QAE7B,MAAMC,aAAa,IAAIC;QACvB,MAAMC,MAAM,CAAC,GAAGC;YACZ,KAAK,MAAMC,qBAAqBD,mBAAoB;gBAChDH,WAAWE,GAAG,CAACE;YACnB;QACJ;QAEAF,IAAIT,eAAeE,SAASC;QAE5B,IAAI,CAACA,mBAAmB;YACpBM,IAAIX,YAAY;gBAAE,GAAGI,OAAO;gBAAEI,MAAMD;YAAS;QACjD;QAEA,KAAK,MAAMO,aAAa;eAAIL;SAAW,CAAE;YACrCK,aAAaR;QACjB;IACJ;AACJ;AAEA,OAAO,SAASS,aAAaX,UAAuB,CAAC,CAAC,EAAEC,iBAAqC;IACzF,OAAO,CAAC,GAAGC;QACPH,KACI;YACI,GAAGC,OAAO;YACVY,UAAU;QACd,GACAX,sBACCC;IACT;AACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vnodes/prop",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.25",
|
|
4
4
|
"description": "@vnodes/prop",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"prop"
|
|
@@ -51,12 +51,12 @@
|
|
|
51
51
|
"@swc/helpers": "~0.5.18"
|
|
52
52
|
},
|
|
53
53
|
"peerDependencies": {
|
|
54
|
-
"@vnodes/nestjs": "0.0.
|
|
55
|
-
"@vnodes/types": "0.0.
|
|
54
|
+
"@vnodes/nestjs": "0.0.25",
|
|
55
|
+
"@vnodes/types": "0.0.25"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@vnodes/
|
|
59
|
-
"@vnodes/
|
|
58
|
+
"@vnodes/types": "0.0.25",
|
|
59
|
+
"@vnodes/nestjs": "0.0.25"
|
|
60
60
|
},
|
|
61
61
|
"publishConfig": {
|
|
62
62
|
"access": "public",
|