nestjs-swagger-validator 0.1.2 → 0.1.3
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
CHANGED
|
@@ -69,6 +69,9 @@ birthDate: string;
|
|
|
69
69
|
|
|
70
70
|
@ApiProperty({ type: 'string', minLength: 8, maxLength: 128 })
|
|
71
71
|
password: string;
|
|
72
|
+
|
|
73
|
+
@ApiProperty({ type: 'string', matches: /^[a-z0-9-]+$/ })
|
|
74
|
+
slug: string;
|
|
72
75
|
```
|
|
73
76
|
|
|
74
77
|
### Number
|
|
@@ -139,6 +142,67 @@ middleName: string | null;
|
|
|
139
142
|
nickname?: string | null;
|
|
140
143
|
```
|
|
141
144
|
|
|
145
|
+
## Custom Error Messages
|
|
146
|
+
|
|
147
|
+
Type validators (`IsString`, `IsNumber`, `IsBoolean`, `IsObject`) use `typeMessage`:
|
|
148
|
+
|
|
149
|
+
```typescript
|
|
150
|
+
@ApiProperty({ type: 'string', typeMessage: 'Must be a string' })
|
|
151
|
+
name: string;
|
|
152
|
+
|
|
153
|
+
@ApiProperty({ type: 'number', typeMessage: 'Must be a number' })
|
|
154
|
+
age: number;
|
|
155
|
+
|
|
156
|
+
@ApiProperty({ type: 'boolean', typeMessage: 'Must be true or false' })
|
|
157
|
+
isActive: boolean;
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
All boolean validators (`isEmail`, `isUrl`, `isPhone`, `isDate`, `isPositive`, `isInt`, `isNotEmpty`) accept an object with a `message` property:
|
|
161
|
+
|
|
162
|
+
```typescript
|
|
163
|
+
@ApiProperty({
|
|
164
|
+
type: 'string',
|
|
165
|
+
isEmail: { message: 'Invalid email format' },
|
|
166
|
+
isNotEmpty: { message: 'Email is required' },
|
|
167
|
+
})
|
|
168
|
+
email: string;
|
|
169
|
+
|
|
170
|
+
@ApiProperty({
|
|
171
|
+
type: 'number',
|
|
172
|
+
isPositive: { message: 'Must be positive' },
|
|
173
|
+
isInt: { message: 'Must be an integer' },
|
|
174
|
+
})
|
|
175
|
+
age: number;
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Numeric validators (`minLength`, `maxLength`, `arrayMinSize`) accept a `value`/`message` object:
|
|
179
|
+
|
|
180
|
+
```typescript
|
|
181
|
+
@ApiProperty({
|
|
182
|
+
type: 'string',
|
|
183
|
+
minLength: { value: 3, message: 'At least 3 characters' },
|
|
184
|
+
maxLength: { value: 50, message: 'At most 50 characters' },
|
|
185
|
+
})
|
|
186
|
+
name: string;
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
Regex matching with a custom message:
|
|
190
|
+
|
|
191
|
+
```typescript
|
|
192
|
+
@ApiProperty({
|
|
193
|
+
type: 'string',
|
|
194
|
+
matches: { pattern: /^[a-z0-9-]+$/, message: 'Must be a valid slug' },
|
|
195
|
+
})
|
|
196
|
+
slug: string;
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
Enum with a custom message:
|
|
200
|
+
|
|
201
|
+
```typescript
|
|
202
|
+
@ApiProperty({ enum: Role, enumMessage: 'Must be a valid role' })
|
|
203
|
+
role: Role;
|
|
204
|
+
```
|
|
205
|
+
|
|
142
206
|
## Custom Validators
|
|
143
207
|
|
|
144
208
|
The package also exports `IsNullable` and `IsUndefined` validators for standalone use:
|
|
@@ -13,7 +13,7 @@ function ApiProperty(options) {
|
|
|
13
13
|
...(0, helpers_1.getOptionalDecorator)(options),
|
|
14
14
|
];
|
|
15
15
|
if (options.type === 'string' && !options.format) {
|
|
16
|
-
decorators.push((0, class_validator_1.IsString)({ each: options.isArray }));
|
|
16
|
+
decorators.push((0, class_validator_1.IsString)({ each: options.isArray, message: options.typeMessage }));
|
|
17
17
|
if (options.isEmail) {
|
|
18
18
|
decorators.push((0, class_validator_1.IsEmail)(undefined, { each: options.isArray, message: (0, helpers_1.getMessage)(options.isEmail) }));
|
|
19
19
|
}
|
|
@@ -37,7 +37,7 @@ function ApiProperty(options) {
|
|
|
37
37
|
}
|
|
38
38
|
if (options.type === 'number') {
|
|
39
39
|
decorators.push((0, class_transformer_1.Type)(() => Number));
|
|
40
|
-
decorators.push((0, class_validator_1.IsNumber)({}, { each: options.isArray }));
|
|
40
|
+
decorators.push((0, class_validator_1.IsNumber)({}, { each: options.isArray, message: options.typeMessage }));
|
|
41
41
|
if (options.isPositive) {
|
|
42
42
|
decorators.push((0, class_validator_1.IsPositive)({ each: options.isArray, message: (0, helpers_1.getMessage)(options.isPositive) }));
|
|
43
43
|
}
|
|
@@ -46,10 +46,10 @@ function ApiProperty(options) {
|
|
|
46
46
|
}
|
|
47
47
|
}
|
|
48
48
|
if (options.type === 'boolean') {
|
|
49
|
-
decorators.push((0, class_validator_1.IsBoolean)({ each: options.isArray }));
|
|
49
|
+
decorators.push((0, class_validator_1.IsBoolean)({ each: options.isArray, message: options.typeMessage }));
|
|
50
50
|
}
|
|
51
51
|
if (options.type === 'object') {
|
|
52
|
-
decorators.push((0, class_validator_1.IsObject)({ each: options.isArray }));
|
|
52
|
+
decorators.push((0, class_validator_1.IsObject)({ each: options.isArray, message: options.typeMessage }));
|
|
53
53
|
}
|
|
54
54
|
if ('enum' in options && options.enum) {
|
|
55
55
|
const enumMessage = options.enumMessage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-property.decorator.js","sourceRoot":"","sources":["../src/api-property.decorator.ts"],"names":[],"mappings":";;AA8HS,kCAAW;AA9HpB,2CAAiD;AACjD,6CAGyB;AACzB,yDAAiD;AACjD,qDAmByB;AAEzB,uCAA8E;AAG9E,SAAS,WAAW,CAAC,OAA2B;IAC9C,MAAM,UAAU,GAAwB;QACtC,IAAA,qBAAkB,EAAC,OAAoC,CAAC;QACxD,IAAA,0BAAM,GAAE;QACR,GAAG,IAAA,8BAAoB,EAAC,OAAO,CAAC;KACjC,CAAC;IAEF,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACjD,UAAU,CAAC,IAAI,CAAC,IAAA,0BAAQ,EAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"api-property.decorator.js","sourceRoot":"","sources":["../src/api-property.decorator.ts"],"names":[],"mappings":"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"}
|