@astral/validations 4.1.0 → 4.2.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
@@ -37,6 +37,9 @@
37
37
  - [personName](#personName)
38
38
  - [personSurname](#personSurname)
39
39
  - [personPatronymic](#personPatronymic)
40
+ - [passportSeries](#passportSeries)
41
+ - [passportNumber](#passportNumber)
42
+ - [passportCode](#passportCode)
40
43
  - [date](#date)
41
44
  - [min](#min-date)
42
45
  - [max](#max-date)
@@ -641,6 +644,84 @@ validate('');
641
644
  validate('Иванович--Иванович');
642
645
  ```
643
646
 
647
+ ---
648
+
649
+ ### passportSeries
650
+
651
+ Проверяет валидна ли серия паспорта
652
+
653
+ #### [Требования на реализацию](https://track.astral.ru/soft/wiki/pages/viewpage.action?pageId=3813152849#id-Требованиянареализацию-8.1.Серияпаспорта)
654
+
655
+ ```ts
656
+ import { string, passportSeries } from '@astral/validations';
657
+
658
+ const validate = string(passportSeries());
659
+
660
+ // undefined
661
+ validate('9217');
662
+
663
+ // { message: 'Проверьте серию' }
664
+ validate('0017');
665
+
666
+ // { message: 'Длина поля должна быть равна 4 символам' }
667
+ validate('917');
668
+
669
+ // { message: 'Только цифры' }
670
+ validate('91а7');
671
+ ```
672
+
673
+ ---
674
+
675
+ ### passportNumber
676
+
677
+ Проверяет валиден ли номер паспорта
678
+
679
+ #### [Требования на реализацию](https://track.astral.ru/soft/wiki/pages/viewpage.action?pageId=3813152849#id-Требованиянареализацию-8.2.Номерпаспорта)
680
+
681
+ ```ts
682
+ import { string, passportNumber } from '@astral/validations';
683
+
684
+ const validate = string(passportNumber());
685
+
686
+ // undefined
687
+ validate('704564');
688
+
689
+ // { message: 'Проверьте номер' }
690
+ validate('000100');
691
+
692
+ // { message: 'Длина поля должна быть равна 6 символам' }
693
+ validate('7045');
694
+
695
+ // { message: 'Только цифры' }
696
+ validate('70а5');
697
+ ```
698
+
699
+ ---
700
+
701
+ ### passportCode
702
+
703
+ Проверяет валиден ли код паспорта
704
+
705
+ #### [Требования на реализацию](https://track.astral.ru/soft/wiki/pages/viewpage.action?pageId=3813152849#id-Требованиянареализацию-8.3.Кодподразделения)
706
+
707
+ ```ts
708
+ import { string, passportCode } from '@astral/validations';
709
+
710
+ const validate = string(passportCode());
711
+
712
+ // undefined
713
+ validate('123256');
714
+
715
+ // { message: 'Проверьте код' }
716
+ validate('000-456');
717
+
718
+ // { message: 'Длина поля должна быть равна 6 символам' }
719
+ validate('1234');
720
+
721
+ // { message: 'Только цифры' }
722
+ validate('1а3');
723
+ ```
724
+
644
725
 
645
726
  ## date
646
727
 
package/index.d.ts CHANGED
@@ -26,6 +26,9 @@ export { ogrnUL, OGRN_UL_ERROR_INFO } from './ogrnUL';
26
26
  export { ogrnIP, OGRN_IP_ERROR_INFO } from './ogrnIP';
27
27
  export { personName, PERSON_NAME_ERROR_INFO } from './personName';
28
28
  export { personSurname, PERSON_SURNAME_ERROR_INFO } from './personSurname';
29
+ export { passportSeries, PASSPORT_SERIES_ERROR_INFO, PASSPORT_SERIES_ERROR_LENGTH_INFO, PASSPORT_SERIES_ONLY_DIGITS_ERROR_INFO, } from './passportSeries';
30
+ export { passportNumber, PASSPORT_NUMBER_ERROR_INFO, PASSPORT_NUMBER_LENGTH_ERROR_INFO, PASSPORT_NUMBER_ONLY_DIGITS_ERROR_INFO, } from './passportNumber';
31
+ export { passportCode, PASSPORT_CODE_ERROR_INFO, PASSPORT_CODE_LENGTH_ERROR_INFO, PASSPORT_CODE_ONLY_DIGITS_ERROR_INFO, } from './passportCode';
29
32
  export { personPatronymic, PERSON_PATRONYMIC_ERROR_INFO, } from './personPatronymic';
30
33
  export { any } from './any';
31
34
  export { when } from './when';
package/index.js CHANGED
@@ -26,6 +26,9 @@ export { ogrnUL, OGRN_UL_ERROR_INFO } from './ogrnUL';
26
26
  export { ogrnIP, OGRN_IP_ERROR_INFO } from './ogrnIP';
27
27
  export { personName, PERSON_NAME_ERROR_INFO } from './personName';
28
28
  export { personSurname, PERSON_SURNAME_ERROR_INFO } from './personSurname';
29
+ export { passportSeries, PASSPORT_SERIES_ERROR_INFO, PASSPORT_SERIES_ERROR_LENGTH_INFO, PASSPORT_SERIES_ONLY_DIGITS_ERROR_INFO, } from './passportSeries';
30
+ export { passportNumber, PASSPORT_NUMBER_ERROR_INFO, PASSPORT_NUMBER_LENGTH_ERROR_INFO, PASSPORT_NUMBER_ONLY_DIGITS_ERROR_INFO, } from './passportNumber';
31
+ export { passportCode, PASSPORT_CODE_ERROR_INFO, PASSPORT_CODE_LENGTH_ERROR_INFO, PASSPORT_CODE_ONLY_DIGITS_ERROR_INFO, } from './passportCode';
29
32
  export { personPatronymic, PERSON_PATRONYMIC_ERROR_INFO, } from './personPatronymic';
30
33
  export { any } from './any';
31
34
  export { when } from './when';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astral/validations",
3
- "version": "4.1.0",
3
+ "version": "4.2.0",
4
4
  "browser": "./index.js",
5
5
  "main": "./index.js",
6
6
  "dependencies": {
@@ -0,0 +1,4 @@
1
+ import { ErrorInfo } from '../core';
2
+ export declare const PASSPORT_CODE_ERROR_INFO: ErrorInfo;
3
+ export declare const PASSPORT_CODE_LENGTH_ERROR_INFO: ErrorInfo;
4
+ export declare const PASSPORT_CODE_ONLY_DIGITS_ERROR_INFO: ErrorInfo;
@@ -0,0 +1,13 @@
1
+ import { createErrorCode } from '../core';
2
+ export const PASSPORT_CODE_ERROR_INFO = {
3
+ code: createErrorCode('passportCode'),
4
+ message: 'Проверьте код',
5
+ };
6
+ export const PASSPORT_CODE_LENGTH_ERROR_INFO = {
7
+ code: createErrorCode('passportCode'),
8
+ message: 'Длина поля должна быть равна 6 символам',
9
+ };
10
+ export const PASSPORT_CODE_ONLY_DIGITS_ERROR_INFO = {
11
+ code: createErrorCode('passportCode'),
12
+ message: 'Только цифры',
13
+ };
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './passportCode';
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './passportCode';
@@ -0,0 +1,17 @@
1
+ import { CommonRuleParams } from '../core';
2
+ type PassportCodeParams = CommonRuleParams<string> & {
3
+ /**
4
+ * @description Замена стандартного сообщения ошибки.
5
+ */
6
+ message?: string;
7
+ };
8
+ /**
9
+ * @description Проверяет валиден ли код паспорта
10
+ * @example
11
+ * ```ts
12
+ * const validate = string(passportCode());
13
+ * validate('123456');
14
+ * ```
15
+ */
16
+ export declare const passportCode: <TLastSchemaValues extends Record<string, unknown>>(params?: PassportCodeParams) => (value: string, prevCtx?: import("../core").ValidationContext<TLastSchemaValues> | undefined) => import("../core").ValidationResult;
17
+ export {};
@@ -0,0 +1,38 @@
1
+ import { createRule, isNoDoubleZeroStart } from '../core';
2
+ import { onlyNumber } from '../onlyNumber';
3
+ import { PASSPORT_CODE_ERROR_INFO, PASSPORT_CODE_LENGTH_ERROR_INFO, PASSPORT_CODE_ONLY_DIGITS_ERROR_INFO, } from './constants';
4
+ /**
5
+ * @description Проверяет валиден ли код паспорта
6
+ * @example
7
+ * ```ts
8
+ * const validate = string(passportCode());
9
+ * validate('123456');
10
+ * ```
11
+ */
12
+ export const passportCode = (params) => createRule((value, ctx) => {
13
+ if (onlyNumber()(value)) {
14
+ return ctx.createError({
15
+ message: (params === null || params === void 0 ? void 0 : params.message) || PASSPORT_CODE_ONLY_DIGITS_ERROR_INFO.message,
16
+ code: PASSPORT_CODE_ONLY_DIGITS_ERROR_INFO.code,
17
+ });
18
+ }
19
+ if (!isNoDoubleZeroStart(value)) {
20
+ return ctx.createError({
21
+ message: (params === null || params === void 0 ? void 0 : params.message) || PASSPORT_CODE_ERROR_INFO.message,
22
+ code: PASSPORT_CODE_ERROR_INFO.code,
23
+ });
24
+ }
25
+ if (value.length !== 6) {
26
+ return ctx.createError({
27
+ message: (params === null || params === void 0 ? void 0 : params.message) || PASSPORT_CODE_LENGTH_ERROR_INFO.message,
28
+ code: PASSPORT_CODE_LENGTH_ERROR_INFO.code,
29
+ });
30
+ }
31
+ if (!/^([0-9]{2}[0-3])/.test(value)) {
32
+ return ctx.createError({
33
+ message: (params === null || params === void 0 ? void 0 : params.message) || PASSPORT_CODE_ERROR_INFO.message,
34
+ code: PASSPORT_CODE_ERROR_INFO.code,
35
+ });
36
+ }
37
+ return undefined;
38
+ }, { exclude: params === null || params === void 0 ? void 0 : params.exclude });
@@ -0,0 +1,4 @@
1
+ import { ErrorInfo } from '../core';
2
+ export declare const PASSPORT_NUMBER_ERROR_INFO: ErrorInfo;
3
+ export declare const PASSPORT_NUMBER_LENGTH_ERROR_INFO: ErrorInfo;
4
+ export declare const PASSPORT_NUMBER_ONLY_DIGITS_ERROR_INFO: ErrorInfo;
@@ -0,0 +1,13 @@
1
+ import { createErrorCode } from '../core';
2
+ export const PASSPORT_NUMBER_ERROR_INFO = {
3
+ code: createErrorCode('passportNumber'),
4
+ message: 'Проверьте номер',
5
+ };
6
+ export const PASSPORT_NUMBER_LENGTH_ERROR_INFO = {
7
+ code: createErrorCode('passportNumber'),
8
+ message: 'Длина поля должна быть равна 6 символам',
9
+ };
10
+ export const PASSPORT_NUMBER_ONLY_DIGITS_ERROR_INFO = {
11
+ code: createErrorCode('passportNumber'),
12
+ message: 'Только цифры',
13
+ };
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './passportNumber';
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './passportNumber';
@@ -0,0 +1,17 @@
1
+ import { CommonRuleParams } from '../core';
2
+ type PassportNumberParams = CommonRuleParams<string> & {
3
+ /**
4
+ * @description Замена стандартного сообщения ошибки.
5
+ */
6
+ message?: string;
7
+ };
8
+ /**
9
+ * @description Проверяет валиден ли номер паспорта
10
+ * @example
11
+ * ```ts
12
+ * const validate = string(passportNumber());
13
+ * validate('704564');
14
+ * ```
15
+ */
16
+ export declare const passportNumber: <TLastSchemaValues extends Record<string, unknown>>(params?: PassportNumberParams) => (value: string, prevCtx?: import("../core").ValidationContext<TLastSchemaValues> | undefined) => import("../core").ValidationResult;
17
+ export {};
@@ -0,0 +1,32 @@
1
+ import { onlyNumber } from '../onlyNumber';
2
+ import { createRule } from '../core';
3
+ import { PASSPORT_NUMBER_ERROR_INFO, PASSPORT_NUMBER_LENGTH_ERROR_INFO, PASSPORT_NUMBER_ONLY_DIGITS_ERROR_INFO, } from './constants';
4
+ /**
5
+ * @description Проверяет валиден ли номер паспорта
6
+ * @example
7
+ * ```ts
8
+ * const validate = string(passportNumber());
9
+ * validate('704564');
10
+ * ```
11
+ */
12
+ export const passportNumber = (params) => createRule((value, ctx) => {
13
+ if (onlyNumber()(value)) {
14
+ return ctx.createError({
15
+ message: (params === null || params === void 0 ? void 0 : params.message) || PASSPORT_NUMBER_ONLY_DIGITS_ERROR_INFO.message,
16
+ code: PASSPORT_NUMBER_ONLY_DIGITS_ERROR_INFO.code,
17
+ });
18
+ }
19
+ if (value.length !== 6) {
20
+ return ctx.createError({
21
+ message: (params === null || params === void 0 ? void 0 : params.message) || PASSPORT_NUMBER_LENGTH_ERROR_INFO.message,
22
+ code: PASSPORT_NUMBER_LENGTH_ERROR_INFO.code,
23
+ });
24
+ }
25
+ if (value < '000101' || value > '999999') {
26
+ return ctx.createError({
27
+ message: (params === null || params === void 0 ? void 0 : params.message) || PASSPORT_NUMBER_ERROR_INFO.message,
28
+ code: PASSPORT_NUMBER_ERROR_INFO.code,
29
+ });
30
+ }
31
+ return undefined;
32
+ }, { exclude: params === null || params === void 0 ? void 0 : params.exclude });
@@ -0,0 +1,4 @@
1
+ import { ErrorInfo } from '../core';
2
+ export declare const PASSPORT_SERIES_ERROR_INFO: ErrorInfo;
3
+ export declare const PASSPORT_SERIES_ERROR_LENGTH_INFO: ErrorInfo;
4
+ export declare const PASSPORT_SERIES_ONLY_DIGITS_ERROR_INFO: ErrorInfo;
@@ -0,0 +1,13 @@
1
+ import { createErrorCode } from '../core';
2
+ export const PASSPORT_SERIES_ERROR_INFO = {
3
+ code: createErrorCode('passportSeries'),
4
+ message: 'Проверьте серию',
5
+ };
6
+ export const PASSPORT_SERIES_ERROR_LENGTH_INFO = {
7
+ code: createErrorCode('passportSeries'),
8
+ message: 'Длина поля должна быть равна 4 символам',
9
+ };
10
+ export const PASSPORT_SERIES_ONLY_DIGITS_ERROR_INFO = {
11
+ code: createErrorCode('passportSeries'),
12
+ message: 'Только цифры',
13
+ };
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './passportSeries';
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './passportSeries';
@@ -0,0 +1,17 @@
1
+ import { CommonRuleParams } from '../core';
2
+ type PassportSeriesParams = CommonRuleParams<string> & {
3
+ /**
4
+ * @description Замена стандартного сообщения ошибки.
5
+ */
6
+ message?: string;
7
+ };
8
+ /**
9
+ * @description Проверяет валидна ли серия паспорта
10
+ * @example
11
+ * ```ts
12
+ * const validate = string(passportSeries());
13
+ * validate('9217');
14
+ * ```
15
+ */
16
+ export declare const passportSeries: <TLastSchemaValues extends Record<string, unknown>>(params?: PassportSeriesParams) => (value: string, prevCtx?: import("../core").ValidationContext<TLastSchemaValues> | undefined) => import("../core").ValidationResult;
17
+ export {};
@@ -0,0 +1,32 @@
1
+ import { createRule, isNoDoubleZeroStart } from '../core';
2
+ import { onlyNumber } from '../onlyNumber';
3
+ import { PASSPORT_SERIES_ERROR_INFO, PASSPORT_SERIES_ERROR_LENGTH_INFO, PASSPORT_SERIES_ONLY_DIGITS_ERROR_INFO, } from './constants';
4
+ /**
5
+ * @description Проверяет валидна ли серия паспорта
6
+ * @example
7
+ * ```ts
8
+ * const validate = string(passportSeries());
9
+ * validate('9217');
10
+ * ```
11
+ */
12
+ export const passportSeries = (params) => createRule((value, ctx) => {
13
+ if (onlyNumber()(value)) {
14
+ return ctx.createError({
15
+ message: (params === null || params === void 0 ? void 0 : params.message) || PASSPORT_SERIES_ONLY_DIGITS_ERROR_INFO.message,
16
+ code: PASSPORT_SERIES_ONLY_DIGITS_ERROR_INFO.code,
17
+ });
18
+ }
19
+ if (value.length !== 4) {
20
+ return ctx.createError({
21
+ message: (params === null || params === void 0 ? void 0 : params.message) || PASSPORT_SERIES_ERROR_LENGTH_INFO.message,
22
+ code: PASSPORT_SERIES_ERROR_LENGTH_INFO.code,
23
+ });
24
+ }
25
+ if (!isNoDoubleZeroStart(value)) {
26
+ return ctx.createError({
27
+ message: (params === null || params === void 0 ? void 0 : params.message) || PASSPORT_SERIES_ERROR_INFO.message,
28
+ code: PASSPORT_SERIES_ERROR_INFO.code,
29
+ });
30
+ }
31
+ return undefined;
32
+ }, { exclude: params === null || params === void 0 ? void 0 : params.exclude });