@astral/validations 4.0.0 → 4.1.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.
Files changed (40) hide show
  1. package/README.md +69 -0
  2. package/core/utils/index.d.ts +4 -0
  3. package/core/utils/index.js +4 -0
  4. package/core/utils/isFullNameValidCharacters/index.d.ts +1 -0
  5. package/core/utils/isFullNameValidCharacters/index.js +1 -0
  6. package/core/utils/isFullNameValidCharacters/isFullNameValidCharacters.d.ts +5 -0
  7. package/core/utils/isFullNameValidCharacters/isFullNameValidCharacters.js +5 -0
  8. package/core/utils/isHasConsecutiveChars/index.d.ts +1 -0
  9. package/core/utils/isHasConsecutiveChars/index.js +1 -0
  10. package/core/utils/isHasConsecutiveChars/isHasConsecutiveChars.d.ts +4 -0
  11. package/core/utils/isHasConsecutiveChars/isHasConsecutiveChars.js +4 -0
  12. package/core/utils/isStartsWithAndEndsWithLetter/index.d.ts +1 -0
  13. package/core/utils/isStartsWithAndEndsWithLetter/index.js +1 -0
  14. package/core/utils/isStartsWithAndEndsWithLetter/isStartsWithAndEndsWithLetter.d.ts +4 -0
  15. package/core/utils/isStartsWithAndEndsWithLetter/isStartsWithAndEndsWithLetter.js +4 -0
  16. package/core/utils/isValidFullNameLength/index.d.ts +1 -0
  17. package/core/utils/isValidFullNameLength/index.js +1 -0
  18. package/core/utils/isValidFullNameLength/isValidFullNameLength.d.ts +4 -0
  19. package/core/utils/isValidFullNameLength/isValidFullNameLength.js +4 -0
  20. package/index.d.ts +3 -0
  21. package/index.js +3 -0
  22. package/package.json +1 -1
  23. package/personName/constants.d.ts +2 -0
  24. package/personName/constants.js +5 -0
  25. package/personName/index.d.ts +2 -0
  26. package/personName/index.js +2 -0
  27. package/personName/personName.d.ts +17 -0
  28. package/personName/personName.js +29 -0
  29. package/personPatronymic/constants.d.ts +2 -0
  30. package/personPatronymic/constants.js +5 -0
  31. package/personPatronymic/index.d.ts +2 -0
  32. package/personPatronymic/index.js +2 -0
  33. package/personPatronymic/personPatronymic.d.ts +17 -0
  34. package/personPatronymic/personPatronymic.js +29 -0
  35. package/personSurname/constants.d.ts +2 -0
  36. package/personSurname/constants.js +5 -0
  37. package/personSurname/index.d.ts +2 -0
  38. package/personSurname/index.js +2 -0
  39. package/personSurname/personSurname.d.ts +17 -0
  40. package/personSurname/personSurname.js +29 -0
package/README.md CHANGED
@@ -34,6 +34,9 @@
34
34
  - [kpp](#kpp)
35
35
  - [ogrnIP](#ogrnIP)
36
36
  - [ogrnUL](#ogrnUL)
37
+ - [personName](#personName)
38
+ - [personSurname](#personSurname)
39
+ - [personPatronymic](#personPatronymic)
37
40
  - [date](#date)
38
41
  - [min](#min-date)
39
42
  - [max](#max-date)
@@ -573,6 +576,72 @@ validate('1-22-33-5555555-6')
573
576
 
574
577
  ---
575
578
 
579
+ ### personName
580
+
581
+ Проверяет валидно ли имя
582
+
583
+ #### [Требования на реализацию](https://track.astral.ru/soft/wiki/pages/viewpage.action?pageId=3813152849#id-Требованиянареализацию-Требование5.Поле"Имя")
584
+
585
+ ```ts
586
+ import { string, personName } from '@astral/validations';
587
+
588
+ const validate = string(personName());
589
+
590
+ // undefined
591
+ validate('Иван');
592
+ validate('иван');
593
+
594
+ // { message: 'Проверьте имя' }
595
+ validate('');
596
+ validate('Иван--Иван');
597
+ ```
598
+
599
+ ---
600
+
601
+ ### personSurname
602
+
603
+ Проверяет валидно ли фамилия
604
+
605
+ #### [Требования на реализацию](https://track.astral.ru/soft/wiki/pages/viewpage.action?pageId=3813152849#id-Требованиянареализацию-Требование4.Поле"Фамилия")
606
+
607
+ ```ts
608
+ import { string, personSurname } from '@astral/validations';
609
+
610
+ const validate = string(personSurname());
611
+
612
+ // undefined
613
+ validate('Иванов');
614
+ validate('иванов');
615
+
616
+ // { message: 'Проверьте фамилию' }
617
+ validate('');
618
+ validate('Иванов--иванов');
619
+ ```
620
+
621
+ ---
622
+
623
+ ### personPatronymic
624
+
625
+ Проверяет валидно ли отчество
626
+
627
+ #### [Требования на реализацию](https://track.astral.ru/soft/wiki/pages/viewpage.action?pageId=3813152849#id-Требованиянареализацию-Требование6.Поле"Отчество")
628
+
629
+ ```ts
630
+ import { string, personPatronymic } from '@astral/validations';
631
+
632
+ const validate = string(personPatronymic());
633
+
634
+ // undefined
635
+ validate('Иванович');
636
+ validate('иванович');
637
+
638
+
639
+ // { message: 'Проверьте отчество' }
640
+ validate('');
641
+ validate('Иванович--Иванович');
642
+ ```
643
+
644
+
576
645
  ## date
577
646
 
578
647
  - Возвращает ошибку если:
@@ -1,3 +1,7 @@
1
1
  export * from './isStringOfZeros';
2
2
  export * from './isNoDoubleZeroStart';
3
3
  export * from './resetTime';
4
+ export * from './isStartsWithAndEndsWithLetter';
5
+ export * from './isHasConsecutiveChars';
6
+ export * from './isFullNameValidCharacters';
7
+ export * from './isValidFullNameLength';
@@ -1,3 +1,7 @@
1
1
  export * from './isStringOfZeros';
2
2
  export * from './isNoDoubleZeroStart';
3
3
  export * from './resetTime';
4
+ export * from './isStartsWithAndEndsWithLetter';
5
+ export * from './isHasConsecutiveChars';
6
+ export * from './isFullNameValidCharacters';
7
+ export * from './isValidFullNameLength';
@@ -0,0 +1 @@
1
+ export * from './isFullNameValidCharacters';
@@ -0,0 +1 @@
1
+ export * from './isFullNameValidCharacters';
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @description Проверяет, что разрешенные символы в тексте: прописные (большие) и строчные буквы (включая ё) русского алфавита,
3
+ прописные (большие) буквы I и V латинского алфавита, -, пробел, точка, апостроф, запятая, открывающая и закрывающая скобка
4
+ */
5
+ export declare const isFullNameValidCharacters: (value: string) => boolean;
@@ -0,0 +1,5 @@
1
+ /**
2
+ * @description Проверяет, что разрешенные символы в тексте: прописные (большие) и строчные буквы (включая ё) русского алфавита,
3
+ прописные (большие) буквы I и V латинского алфавита, -, пробел, точка, апостроф, запятая, открывающая и закрывающая скобка
4
+ */
5
+ export const isFullNameValidCharacters = (value) => !/^([а-яёА-ЯЁIV ё.,'’‎()\-\s]+)$/.test(value);
@@ -0,0 +1 @@
1
+ export * from './isHasConsecutiveChars';
@@ -0,0 +1 @@
1
+ export * from './isHasConsecutiveChars';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @description Проверяет, что текст не может содержать последовательно два спецсимвола/пробела
3
+ */
4
+ export declare const isHasConsecutiveChars: (value: string) => boolean;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @description Проверяет, что текст не может содержать последовательно два спецсимвола/пробела
3
+ */
4
+ export const isHasConsecutiveChars = (value) => /([`~!@#$%^&*()\-_=+[{\]}\|;:'",<.>/?])\1|\s{2}/.test(value);
@@ -0,0 +1 @@
1
+ export * from './isStartsWithAndEndsWithLetter';
@@ -0,0 +1 @@
1
+ export * from './isStartsWithAndEndsWithLetter';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @description Проверяет, что текст начинается с буквы и заканчивается буквой, кроме скобок ()
3
+ */
4
+ export declare const isStartsWithAndEndsWithLetter: (value: string) => boolean;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @description Проверяет, что текст начинается с буквы и заканчивается буквой, кроме скобок ()
3
+ */
4
+ export const isStartsWithAndEndsWithLetter = (value) => !/^[IV а-яёА-ЯЁ()](?:.*[IV а-яёА-ЯЁ()])?$/.test(value);
@@ -0,0 +1 @@
1
+ export * from './isValidFullNameLength';
@@ -0,0 +1 @@
1
+ export * from './isValidFullNameLength';
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @description Проверяет, что длина значения находится в допустимом диапазоне от 1 до 200 символов
3
+ */
4
+ export declare const isValidFullNameLength: (value: string) => boolean;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @description Проверяет, что длина значения находится в допустимом диапазоне от 1 до 200 символов
3
+ */
4
+ export const isValidFullNameLength = (value) => value.length < 1 || value.length > 200;
package/index.d.ts CHANGED
@@ -24,6 +24,9 @@ export { snils, SNILS_ERROR_INFO } from './snils';
24
24
  export { createRule, REQUIRED_ERROR_INFO, type ValidationRule } from './core';
25
25
  export { ogrnUL, OGRN_UL_ERROR_INFO } from './ogrnUL';
26
26
  export { ogrnIP, OGRN_IP_ERROR_INFO } from './ogrnIP';
27
+ export { personName, PERSON_NAME_ERROR_INFO } from './personName';
28
+ export { personSurname, PERSON_SURNAME_ERROR_INFO } from './personSurname';
29
+ export { personPatronymic, PERSON_PATRONYMIC_ERROR_INFO, } from './personPatronymic';
27
30
  export { any } from './any';
28
31
  export { when } from './when';
29
32
  export { toPrettyError } from './toPrettyError';
package/index.js CHANGED
@@ -24,6 +24,9 @@ export { snils, SNILS_ERROR_INFO } from './snils';
24
24
  export { createRule, REQUIRED_ERROR_INFO } from './core';
25
25
  export { ogrnUL, OGRN_UL_ERROR_INFO } from './ogrnUL';
26
26
  export { ogrnIP, OGRN_IP_ERROR_INFO } from './ogrnIP';
27
+ export { personName, PERSON_NAME_ERROR_INFO } from './personName';
28
+ export { personSurname, PERSON_SURNAME_ERROR_INFO } from './personSurname';
29
+ export { personPatronymic, PERSON_PATRONYMIC_ERROR_INFO, } from './personPatronymic';
27
30
  export { any } from './any';
28
31
  export { when } from './when';
29
32
  export { toPrettyError } from './toPrettyError';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astral/validations",
3
- "version": "4.0.0",
3
+ "version": "4.1.0",
4
4
  "browser": "./index.js",
5
5
  "main": "./index.js",
6
6
  "dependencies": {
@@ -0,0 +1,2 @@
1
+ import { ErrorInfo } from '../core';
2
+ export declare const PERSON_NAME_ERROR_INFO: ErrorInfo;
@@ -0,0 +1,5 @@
1
+ import { createErrorCode } from '../core';
2
+ export const PERSON_NAME_ERROR_INFO = {
3
+ code: createErrorCode('personName'),
4
+ message: 'Проверьте имя',
5
+ };
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './personName';
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './personName';
@@ -0,0 +1,17 @@
1
+ import { CommonRuleParams } from '../core';
2
+ type PersonNameParams = CommonRuleParams<string> & {
3
+ /**
4
+ * @description Замена стандартного сообщения ошибки.
5
+ */
6
+ message?: string;
7
+ };
8
+ /**
9
+ * @description Проверяет валидно ли имя
10
+ * @example
11
+ * ```ts
12
+ * const validate = string(personName());
13
+ * validate("Иван");
14
+ * ```
15
+ */
16
+ export declare const personName: <TLastSchemaValues extends Record<string, unknown>>(params?: PersonNameParams) => (value: string, prevCtx?: import("../core").ValidationContext<TLastSchemaValues> | undefined) => import("../core").ValidationResult;
17
+ export {};
@@ -0,0 +1,29 @@
1
+ import { createRule, isFullNameValidCharacters, isHasConsecutiveChars, isStartsWithAndEndsWithLetter, isValidFullNameLength, } from '../core';
2
+ import { PERSON_NAME_ERROR_INFO } from './constants';
3
+ /**
4
+ * @description Проверяет валидно ли имя
5
+ * @example
6
+ * ```ts
7
+ * const validate = string(personName());
8
+ * validate("Иван");
9
+ * ```
10
+ */
11
+ export const personName = (params) => createRule((value, ctx) => {
12
+ const createPersonNameError = () => ctx.createError({
13
+ message: (params === null || params === void 0 ? void 0 : params.message) || PERSON_NAME_ERROR_INFO.message,
14
+ code: PERSON_NAME_ERROR_INFO.code,
15
+ });
16
+ if (isValidFullNameLength(value)) {
17
+ return createPersonNameError();
18
+ }
19
+ if (isFullNameValidCharacters(value)) {
20
+ return createPersonNameError();
21
+ }
22
+ if (isStartsWithAndEndsWithLetter(value)) {
23
+ return createPersonNameError();
24
+ }
25
+ if (isHasConsecutiveChars(value)) {
26
+ return createPersonNameError();
27
+ }
28
+ return undefined;
29
+ }, { exclude: params === null || params === void 0 ? void 0 : params.exclude });
@@ -0,0 +1,2 @@
1
+ import { ErrorInfo } from '../core';
2
+ export declare const PERSON_PATRONYMIC_ERROR_INFO: ErrorInfo;
@@ -0,0 +1,5 @@
1
+ import { createErrorCode } from '../core';
2
+ export const PERSON_PATRONYMIC_ERROR_INFO = {
3
+ code: createErrorCode('personPatronymic'),
4
+ message: 'Проверьте отчество',
5
+ };
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './personPatronymic';
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './personPatronymic';
@@ -0,0 +1,17 @@
1
+ import { CommonRuleParams } from '../core';
2
+ type PersonPatronymicParams = CommonRuleParams<string> & {
3
+ /**
4
+ * @description Замена стандартного сообщения ошибки.
5
+ */
6
+ message?: string;
7
+ };
8
+ /**
9
+ * @description Проверяет валидно ли отчество
10
+ * @example
11
+ * ```ts
12
+ * const validate = string(personPatronymic());
13
+ * validate("Иванович");
14
+ * ```
15
+ */
16
+ export declare const personPatronymic: <TLastSchemaValues extends Record<string, unknown>>(params?: PersonPatronymicParams) => (value: string, prevCtx?: import("../core").ValidationContext<TLastSchemaValues> | undefined) => import("../core").ValidationResult;
17
+ export {};
@@ -0,0 +1,29 @@
1
+ import { createRule, isFullNameValidCharacters, isHasConsecutiveChars, isStartsWithAndEndsWithLetter, isValidFullNameLength, } from '../core';
2
+ import { PERSON_PATRONYMIC_ERROR_INFO } from './constants';
3
+ /**
4
+ * @description Проверяет валидно ли отчество
5
+ * @example
6
+ * ```ts
7
+ * const validate = string(personPatronymic());
8
+ * validate("Иванович");
9
+ * ```
10
+ */
11
+ export const personPatronymic = (params) => createRule((value, ctx) => {
12
+ const createPersonPatronymicError = () => ctx.createError({
13
+ message: (params === null || params === void 0 ? void 0 : params.message) || PERSON_PATRONYMIC_ERROR_INFO.message,
14
+ code: PERSON_PATRONYMIC_ERROR_INFO.code,
15
+ });
16
+ if (isValidFullNameLength(value)) {
17
+ return createPersonPatronymicError();
18
+ }
19
+ if (isFullNameValidCharacters(value)) {
20
+ return createPersonPatronymicError();
21
+ }
22
+ if (isStartsWithAndEndsWithLetter(value)) {
23
+ return createPersonPatronymicError();
24
+ }
25
+ if (isHasConsecutiveChars(value)) {
26
+ return createPersonPatronymicError();
27
+ }
28
+ return undefined;
29
+ }, { exclude: params === null || params === void 0 ? void 0 : params.exclude });
@@ -0,0 +1,2 @@
1
+ import { ErrorInfo } from '../core';
2
+ export declare const PERSON_SURNAME_ERROR_INFO: ErrorInfo;
@@ -0,0 +1,5 @@
1
+ import { createErrorCode } from '../core';
2
+ export const PERSON_SURNAME_ERROR_INFO = {
3
+ code: createErrorCode('personSurname'),
4
+ message: 'Проверьте фамилию',
5
+ };
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './personSurname';
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './personSurname';
@@ -0,0 +1,17 @@
1
+ import { CommonRuleParams } from '../core';
2
+ type PersonSurnameParams = CommonRuleParams<string> & {
3
+ /**
4
+ * @description Замена стандартного сообщения ошибки.
5
+ */
6
+ message?: string;
7
+ };
8
+ /**
9
+ * @description Проверяет валидно ли фамилия
10
+ * @example
11
+ * ```ts
12
+ * const validate = string(personSurname());
13
+ * validate("Иванов");
14
+ * ```
15
+ */
16
+ export declare const personSurname: <TLastSchemaValues extends Record<string, unknown>>(params?: PersonSurnameParams) => (value: string, prevCtx?: import("../core").ValidationContext<TLastSchemaValues> | undefined) => import("../core").ValidationResult;
17
+ export {};
@@ -0,0 +1,29 @@
1
+ import { createRule, isFullNameValidCharacters, isHasConsecutiveChars, isStartsWithAndEndsWithLetter, isValidFullNameLength, } from '../core';
2
+ import { PERSON_SURNAME_ERROR_INFO } from './constants';
3
+ /**
4
+ * @description Проверяет валидно ли фамилия
5
+ * @example
6
+ * ```ts
7
+ * const validate = string(personSurname());
8
+ * validate("Иванов");
9
+ * ```
10
+ */
11
+ export const personSurname = (params) => createRule((value, ctx) => {
12
+ const createPersonSurnameError = () => ctx.createError({
13
+ message: (params === null || params === void 0 ? void 0 : params.message) || PERSON_SURNAME_ERROR_INFO.message,
14
+ code: PERSON_SURNAME_ERROR_INFO.code,
15
+ });
16
+ if (isValidFullNameLength(value)) {
17
+ return createPersonSurnameError();
18
+ }
19
+ if (isFullNameValidCharacters(value)) {
20
+ return createPersonSurnameError();
21
+ }
22
+ if (isStartsWithAndEndsWithLetter(value)) {
23
+ return createPersonSurnameError();
24
+ }
25
+ if (isHasConsecutiveChars(value)) {
26
+ return createPersonSurnameError();
27
+ }
28
+ return undefined;
29
+ }, { exclude: params === null || params === void 0 ? void 0 : params.exclude });