@astral/validations 4.10.1 → 4.11.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 CHANGED
@@ -26,6 +26,7 @@
26
26
  - [max](#max-string)
27
27
  - [email](#email)
28
28
  - [guid](#guid)
29
+ - [length](#length)
29
30
  - [pattern](#pattern)
30
31
  - [onlyNumber](#onlyNumber)
31
32
  - [containsNumbers](#containsNumbers)
@@ -412,6 +413,25 @@ validate('x56a4180-h5aa-42ec-a945-5fd21dec0538');
412
413
 
413
414
  ---
414
415
 
416
+ ### length
417
+
418
+ Проверяет значение на соответствие длине.
419
+
420
+ ```ts
421
+ import { string, length } from '@astral/validations';
422
+
423
+ const validate = string(length(5));
424
+
425
+ // undefined
426
+ validate('aaaaa');
427
+
428
+
429
+ // { message: 'Кол-во символов должно быть: 5' }
430
+ validate('abc');
431
+ ```
432
+
433
+ ---
434
+
415
435
  ### pattern
416
436
 
417
437
  Проверяет строку на соответствие регулярному выражению.
package/index.d.ts CHANGED
@@ -21,6 +21,7 @@ export { containsDifferentCases, CONTAINS_DIFFERENT_CASES_ERROR_CODE, } from './
21
21
  export { toPlainError } from './toPlainError';
22
22
  export { email, LENGTH_EMAIL_ERROR_INFO, INVALID_EMAIL_ERROR_INFO, } from './email';
23
23
  export { guid, INVALID_GUID_ERROR_INFO } from './guid';
24
+ export { length, STRING_LENGTH_ERROR_CODE } from './length';
24
25
  export { mobilePhone, MOBILE_PHONE_ERROR_INFO } from './mobilePhone';
25
26
  export { innUL, INN_UL_ERROR_INFO } from './innUL';
26
27
  export { innIP, INN_IP_ERROR_INFO } from './innIP';
package/index.js CHANGED
@@ -21,6 +21,7 @@ export { containsDifferentCases, CONTAINS_DIFFERENT_CASES_ERROR_CODE, } from './
21
21
  export { toPlainError } from './toPlainError';
22
22
  export { email, LENGTH_EMAIL_ERROR_INFO, INVALID_EMAIL_ERROR_INFO, } from './email';
23
23
  export { guid, INVALID_GUID_ERROR_INFO } from './guid';
24
+ export { length, STRING_LENGTH_ERROR_CODE } from './length';
24
25
  export { mobilePhone, MOBILE_PHONE_ERROR_INFO } from './mobilePhone';
25
26
  export { innUL, INN_UL_ERROR_INFO } from './innUL';
26
27
  export { innIP, INN_IP_ERROR_INFO } from './innIP';
@@ -0,0 +1,2 @@
1
+ import { ErrorCode } from '../core';
2
+ export declare const STRING_LENGTH_ERROR_CODE: ErrorCode;
@@ -0,0 +1,2 @@
1
+ import { createErrorCode } from '../core';
2
+ export const STRING_LENGTH_ERROR_CODE = createErrorCode('stringLength');
@@ -0,0 +1,2 @@
1
+ export * from './length';
2
+ export * from './constants';
@@ -0,0 +1,2 @@
1
+ export * from './length';
2
+ export * from './constants';
@@ -0,0 +1,22 @@
1
+ type LengthParams = {
2
+ /**
3
+ * @description Замена стандартного сообщения ошибки.
4
+ */
5
+ message?: string;
6
+ };
7
+ /**
8
+ * @description Проверяет значение на соответствие длине. Работает с: string
9
+ * @param len - целевой кол-во символов
10
+ * @example
11
+ * // Длина строки должна быть 5 символов
12
+ * const validate = string(length(5));
13
+ *
14
+ * // undefined
15
+ * validate('aaaaa')
16
+ *
17
+ * // error
18
+ * validate('va')
19
+ *
20
+ */
21
+ export declare const length: <TLastSchemaValues extends Record<string, unknown>>(len: number, params?: LengthParams) => (value: string, prevCtx?: import("../core").ValidationContext<TLastSchemaValues> | undefined) => import("../core").ValidationResult;
22
+ export {};
@@ -0,0 +1,26 @@
1
+ import { createRule } from '../core';
2
+ import { STRING_LENGTH_ERROR_CODE } from './constants';
3
+ /**
4
+ * @description Проверяет значение на соответствие длине. Работает с: string
5
+ * @param len - целевой кол-во символов
6
+ * @example
7
+ * // Длина строки должна быть 5 символов
8
+ * const validate = string(length(5));
9
+ *
10
+ * // undefined
11
+ * validate('aaaaa')
12
+ *
13
+ * // error
14
+ * validate('va')
15
+ *
16
+ */
17
+ export const length = (len, params) => createRule((value, ctx) => {
18
+ const currentLength = value.trim().length;
19
+ if (currentLength !== len) {
20
+ return ctx.createError({
21
+ code: STRING_LENGTH_ERROR_CODE,
22
+ message: (params === null || params === void 0 ? void 0 : params.message) || `Кол-во символов должно быть: ${len}`,
23
+ });
24
+ }
25
+ return undefined;
26
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astral/validations",
3
- "version": "4.10.1",
3
+ "version": "4.11.0",
4
4
  "browser": "./index.js",
5
5
  "main": "./index.js",
6
6
  "dependencies": {