nestjs-swagger-validator 0.1.2 → 0.1.4

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
@@ -82,6 +85,9 @@ price: number;
82
85
 
83
86
  @ApiProperty({ type: 'number', isInt: true })
84
87
  quantity: number;
88
+
89
+ @ApiProperty({ type: 'number', min: 0, max: 100 })
90
+ percent: number;
85
91
  ```
86
92
 
87
93
  ### Boolean
@@ -139,6 +145,74 @@ middleName: string | null;
139
145
  nickname?: string | null;
140
146
  ```
141
147
 
148
+ ## Custom Error Messages
149
+
150
+ Type validators (`IsString`, `IsNumber`, `IsBoolean`, `IsObject`) use `typeMessage`:
151
+
152
+ ```typescript
153
+ @ApiProperty({ type: 'string', typeMessage: 'Must be a string' })
154
+ name: string;
155
+
156
+ @ApiProperty({ type: 'number', typeMessage: 'Must be a number' })
157
+ age: number;
158
+
159
+ @ApiProperty({ type: 'boolean', typeMessage: 'Must be true or false' })
160
+ isActive: boolean;
161
+ ```
162
+
163
+ All boolean validators (`isEmail`, `isUrl`, `isPhone`, `isDate`, `isPositive`, `isInt`, `isNotEmpty`) accept an object with a `message` property:
164
+
165
+ ```typescript
166
+ @ApiProperty({
167
+ type: 'string',
168
+ isEmail: { message: 'Invalid email format' },
169
+ isNotEmpty: { message: 'Email is required' },
170
+ })
171
+ email: string;
172
+
173
+ @ApiProperty({
174
+ type: 'number',
175
+ isPositive: { message: 'Must be positive' },
176
+ isInt: { message: 'Must be an integer' },
177
+ })
178
+ age: number;
179
+ ```
180
+
181
+ Numeric validators (`minLength`, `maxLength`, `arrayMinSize`, `min`, `max`) accept a `value`/`message` object:
182
+
183
+ ```typescript
184
+ @ApiProperty({
185
+ type: 'string',
186
+ minLength: { value: 3, message: 'At least 3 characters' },
187
+ maxLength: { value: 50, message: 'At most 50 characters' },
188
+ })
189
+ name: string;
190
+
191
+ @ApiProperty({
192
+ type: 'number',
193
+ min: { value: 0, message: 'Must be at least 0' },
194
+ max: { value: 100, message: 'Must be at most 100' },
195
+ })
196
+ percent: number;
197
+ ```
198
+
199
+ Regex matching with a custom message:
200
+
201
+ ```typescript
202
+ @ApiProperty({
203
+ type: 'string',
204
+ matches: { pattern: /^[a-z0-9-]+$/, message: 'Must be a valid slug' },
205
+ })
206
+ slug: string;
207
+ ```
208
+
209
+ Enum with a custom message:
210
+
211
+ ```typescript
212
+ @ApiProperty({ enum: Role, enumMessage: 'Must be a valid role' })
213
+ role: Role;
214
+ ```
215
+
142
216
  ## Custom Validators
143
217
 
144
218
  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,19 +37,27 @@ 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
  }
44
44
  if (options.isInt) {
45
45
  decorators.push((0, class_validator_1.IsInt)({ each: options.isArray, message: (0, helpers_1.getMessage)(options.isInt) }));
46
46
  }
47
+ if (options.min !== undefined) {
48
+ const { value, message } = (0, helpers_1.getNumberOption)(options.min);
49
+ decorators.push((0, class_validator_1.Min)(value, { each: options.isArray, message }));
50
+ }
51
+ if (options.max !== undefined) {
52
+ const { value, message } = (0, helpers_1.getNumberOption)(options.max);
53
+ decorators.push((0, class_validator_1.Max)(value, { each: options.isArray, message }));
54
+ }
47
55
  }
48
56
  if (options.type === 'boolean') {
49
- decorators.push((0, class_validator_1.IsBoolean)({ each: options.isArray }));
57
+ decorators.push((0, class_validator_1.IsBoolean)({ each: options.isArray, message: options.typeMessage }));
50
58
  }
51
59
  if (options.type === 'object') {
52
- decorators.push((0, class_validator_1.IsObject)({ each: options.isArray }));
60
+ decorators.push((0, class_validator_1.IsObject)({ each: options.isArray, message: options.typeMessage }));
53
61
  }
54
62
  if ('enum' in options && options.enum) {
55
63
  const enumMessage = options.enumMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"api-property.decorator.js","sourceRoot":"","sources":["../src/api-property.decorator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api-property.decorator.js","sourceRoot":"","sources":["../src/api-property.decorator.ts"],"names":[],"mappings":"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"}