@astral/validations 2.26.0 → 3.0.0-beta.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 (316) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +1243 -1
  3. package/any/any.d.ts +21 -0
  4. package/any/any.js +14 -0
  5. package/any/index.d.ts +1 -0
  6. package/any/index.js +1 -0
  7. package/array/array.d.ts +15 -0
  8. package/array/array.js +21 -0
  9. package/array/constants.d.ts +2 -0
  10. package/array/constants.js +5 -0
  11. package/array/index.d.ts +2 -0
  12. package/array/index.js +2 -0
  13. package/arrayItem/arrayItem.d.ts +35 -0
  14. package/arrayItem/arrayItem.js +33 -0
  15. package/arrayItem/index.d.ts +1 -0
  16. package/arrayItem/index.js +1 -0
  17. package/boolean/boolean.d.ts +13 -0
  18. package/boolean/boolean.js +19 -0
  19. package/boolean/constants.d.ts +2 -0
  20. package/boolean/constants.js +5 -0
  21. package/boolean/index.d.ts +2 -0
  22. package/boolean/index.js +2 -0
  23. package/core/compose/compose.d.ts +6 -0
  24. package/{compose → core/compose}/compose.js +2 -3
  25. package/core/context/createContext/createContext.d.ts +8 -0
  26. package/core/context/createContext/createContext.js +15 -0
  27. package/core/context/createContext/index.d.ts +1 -0
  28. package/core/context/createContext/index.js +1 -0
  29. package/core/context/index.d.ts +2 -0
  30. package/core/context/index.js +2 -0
  31. package/core/context/types.d.ts +28 -0
  32. package/core/errors/ArrayError/ArrayError.d.ts +18 -0
  33. package/core/errors/ArrayError/ArrayError.js +10 -0
  34. package/core/errors/ArrayError/createArrayError/createArrayError.d.ts +5 -0
  35. package/core/errors/ArrayError/createArrayError/createArrayError.js +11 -0
  36. package/core/errors/ArrayError/createArrayError/index.d.ts +1 -0
  37. package/core/errors/ArrayError/createArrayError/index.js +1 -0
  38. package/core/errors/ArrayError/index.d.ts +2 -0
  39. package/core/errors/ArrayError/index.js +2 -0
  40. package/core/errors/ErrorMap/ErrorMap.d.ts +21 -0
  41. package/core/errors/ErrorMap/ErrorMap.js +10 -0
  42. package/core/errors/ErrorMap/createErrorMap/createErrorMap.d.ts +5 -0
  43. package/core/errors/ErrorMap/createErrorMap/createErrorMap.js +10 -0
  44. package/core/errors/ErrorMap/createErrorMap/index.d.ts +1 -0
  45. package/core/errors/ErrorMap/createErrorMap/index.js +1 -0
  46. package/core/errors/ErrorMap/index.d.ts +2 -0
  47. package/core/errors/ErrorMap/index.js +2 -0
  48. package/core/errors/SimpleError/SimpleError.d.ts +16 -0
  49. package/core/errors/SimpleError/SimpleError.js +9 -0
  50. package/core/errors/SimpleError/createSimpleError/createSimpleError.d.ts +6 -0
  51. package/core/errors/SimpleError/createSimpleError/createSimpleError.js +5 -0
  52. package/core/errors/SimpleError/createSimpleError/index.d.ts +1 -0
  53. package/core/errors/SimpleError/createSimpleError/index.js +1 -0
  54. package/core/errors/SimpleError/index.d.ts +2 -0
  55. package/core/errors/SimpleError/index.js +2 -0
  56. package/core/errors/createErrorCode/createErrorCode.d.ts +5 -0
  57. package/core/errors/createErrorCode/createErrorCode.js +4 -0
  58. package/core/errors/createErrorCode/index.d.ts +1 -0
  59. package/core/errors/createErrorCode/index.js +1 -0
  60. package/core/errors/index.d.ts +5 -0
  61. package/core/errors/index.js +5 -0
  62. package/core/errors/types.d.ts +18 -0
  63. package/core/errors/types.js +1 -0
  64. package/core/guard/createGuard/createGuard.d.ts +54 -0
  65. package/core/guard/createGuard/createGuard.js +41 -0
  66. package/core/guard/createGuard/index.d.ts +1 -0
  67. package/core/guard/createGuard/index.js +1 -0
  68. package/core/guard/index.d.ts +1 -0
  69. package/core/guard/index.js +1 -0
  70. package/core/index.d.ts +8 -0
  71. package/core/index.js +8 -0
  72. package/core/rule/createRule/createRule.d.ts +42 -0
  73. package/core/rule/createRule/createRule.js +27 -0
  74. package/core/rule/index.d.ts +3 -0
  75. package/core/rule/index.js +3 -0
  76. package/core/rule/required/constants.d.ts +2 -0
  77. package/core/rule/required/constants.js +5 -0
  78. package/core/rule/required/index.d.ts +2 -0
  79. package/core/rule/required/index.js +2 -0
  80. package/core/rule/required/required.d.ts +19 -0
  81. package/core/rule/required/required.js +25 -0
  82. package/core/rule/types.d.ts +15 -0
  83. package/core/rule/types.js +1 -0
  84. package/core/types.d.ts +9 -0
  85. package/core/types.js +1 -0
  86. package/{utils → core/utils}/index.d.ts +1 -1
  87. package/{utils → core/utils}/index.js +1 -1
  88. package/core/utils/isStringOfZeros/index.d.ts +1 -0
  89. package/core/utils/isStringOfZeros/index.js +1 -0
  90. package/{utils → core/utils/isStringOfZeros}/isStringOfZeros.d.ts +1 -1
  91. package/{utils → core/utils/isStringOfZeros}/isStringOfZeros.js +1 -1
  92. package/core/utils/resetTime/index.d.ts +1 -0
  93. package/core/utils/resetTime/index.js +1 -0
  94. package/core/utils/resetTime/resetTime.d.ts +5 -0
  95. package/core/utils/resetTime/resetTime.js +12 -0
  96. package/date/constants.d.ts +3 -0
  97. package/date/constants.js +9 -0
  98. package/date/date.d.ts +19 -0
  99. package/date/date.js +24 -0
  100. package/date/index.d.ts +1 -0
  101. package/date/index.js +1 -0
  102. package/deepPartial/deepPartial.d.ts +29 -0
  103. package/deepPartial/deepPartial.js +21 -0
  104. package/deepPartial/index.d.ts +1 -0
  105. package/deepPartial/index.js +1 -0
  106. package/email/constants.d.ts +5 -0
  107. package/email/constants.js +11 -0
  108. package/email/email.d.ts +28 -0
  109. package/email/email.js +19 -0
  110. package/email/index.d.ts +2 -0
  111. package/email/index.js +2 -0
  112. package/index.d.ts +24 -20
  113. package/index.js +24 -20
  114. package/innIP/constants.d.ts +5 -0
  115. package/innIP/constants.js +8 -0
  116. package/innIP/index.d.ts +2 -0
  117. package/innIP/index.js +2 -0
  118. package/innIP/innIP.d.ts +25 -0
  119. package/innIP/innIP.js +40 -0
  120. package/innUL/constants.d.ts +4 -0
  121. package/innUL/constants.js +7 -0
  122. package/innUL/index.d.ts +2 -0
  123. package/innUL/index.js +2 -0
  124. package/innUL/innUL.d.ts +25 -0
  125. package/innUL/innUL.js +36 -0
  126. package/kpp/constants.d.ts +3 -0
  127. package/kpp/constants.js +6 -0
  128. package/kpp/index.d.ts +2 -0
  129. package/kpp/index.js +2 -0
  130. package/kpp/kpp.d.ts +25 -0
  131. package/kpp/kpp.js +16 -0
  132. package/max/constants.d.ts +5 -0
  133. package/max/constants.js +5 -0
  134. package/max/index.d.ts +2 -0
  135. package/max/index.js +2 -0
  136. package/max/max.d.ts +26 -0
  137. package/max/max.js +42 -0
  138. package/min/constants.d.ts +5 -0
  139. package/min/constants.js +5 -0
  140. package/min/index.d.ts +2 -0
  141. package/min/index.js +2 -0
  142. package/min/min.d.ts +26 -0
  143. package/min/min.js +42 -0
  144. package/mobilePhone/constants.d.ts +3 -0
  145. package/mobilePhone/constants.js +6 -0
  146. package/mobilePhone/index.d.ts +2 -0
  147. package/mobilePhone/index.js +2 -0
  148. package/mobilePhone/mobilePhone.d.ts +27 -0
  149. package/mobilePhone/mobilePhone.js +21 -0
  150. package/number/constants.d.ts +4 -0
  151. package/number/constants.js +13 -0
  152. package/number/index.d.ts +2 -0
  153. package/number/index.js +2 -0
  154. package/number/number.d.ts +19 -0
  155. package/number/number.js +26 -0
  156. package/object/constants.d.ts +2 -0
  157. package/object/constants.js +5 -0
  158. package/object/index.d.ts +2 -0
  159. package/object/index.js +2 -0
  160. package/object/isEmptyErrors/index.d.ts +1 -0
  161. package/object/isEmptyErrors/index.js +1 -0
  162. package/object/isEmptyErrors/isEmptyErrors.d.ts +5 -0
  163. package/object/isEmptyErrors/isEmptyErrors.js +4 -0
  164. package/object/object.d.ts +52 -0
  165. package/object/object.js +50 -0
  166. package/ogrnIP/constants.d.ts +3 -0
  167. package/ogrnIP/constants.js +6 -0
  168. package/ogrnIP/index.d.ts +2 -0
  169. package/ogrnIP/index.js +2 -0
  170. package/ogrnIP/ogrnIP.d.ts +25 -0
  171. package/ogrnIP/ogrnIP.js +27 -0
  172. package/ogrnUL/constants.d.ts +3 -0
  173. package/ogrnUL/constants.js +6 -0
  174. package/ogrnUL/index.d.ts +2 -0
  175. package/ogrnUL/index.js +2 -0
  176. package/ogrnUL/ogrnUL.d.ts +25 -0
  177. package/ogrnUL/ogrnUL.js +27 -0
  178. package/onlyNumber/constants.d.ts +2 -0
  179. package/onlyNumber/constants.js +2 -0
  180. package/onlyNumber/index.d.ts +2 -0
  181. package/onlyNumber/index.js +2 -0
  182. package/onlyNumber/onlyNumber.d.ts +24 -0
  183. package/onlyNumber/onlyNumber.js +20 -0
  184. package/optional/index.d.ts +1 -0
  185. package/optional/index.js +1 -0
  186. package/optional/optional.d.ts +7 -0
  187. package/optional/optional.js +15 -0
  188. package/or/index.d.ts +1 -0
  189. package/or/index.js +1 -0
  190. package/or/or.d.ts +22 -0
  191. package/or/or.js +21 -0
  192. package/package.json +2 -2
  193. package/partial/index.d.ts +1 -0
  194. package/partial/index.js +1 -0
  195. package/partial/partial.d.ts +10 -0
  196. package/partial/partial.js +6 -0
  197. package/pattern/constants.d.ts +2 -0
  198. package/pattern/constants.js +2 -0
  199. package/pattern/index.d.ts +2 -0
  200. package/pattern/index.js +2 -0
  201. package/pattern/pattern.d.ts +26 -0
  202. package/pattern/pattern.js +22 -0
  203. package/snils/constants.d.ts +4 -0
  204. package/snils/constants.js +7 -0
  205. package/snils/index.d.ts +2 -0
  206. package/snils/index.js +2 -0
  207. package/snils/snils.d.ts +25 -0
  208. package/{isSNILS/isSNILS.js → snils/snils.js} +20 -21
  209. package/string/constants.d.ts +2 -0
  210. package/string/constants.js +5 -0
  211. package/string/index.d.ts +2 -0
  212. package/string/index.js +2 -0
  213. package/string/string.d.ts +2 -0
  214. package/string/string.js +8 -0
  215. package/toPlainError/index.d.ts +1 -0
  216. package/toPlainError/index.js +1 -0
  217. package/toPlainError/toPlainError.d.ts +35 -0
  218. package/toPlainError/toPlainError.js +49 -0
  219. package/toPlainError/utils/generateArrayPath/generateArrayPath.d.ts +4 -0
  220. package/toPlainError/utils/generateArrayPath/generateArrayPath.js +9 -0
  221. package/toPlainError/utils/generateArrayPath/index.d.ts +1 -0
  222. package/toPlainError/utils/generateArrayPath/index.js +1 -0
  223. package/toPlainError/utils/generateObjectPath/generateObjectPath.d.ts +4 -0
  224. package/toPlainError/utils/generateObjectPath/generateObjectPath.js +9 -0
  225. package/toPlainError/utils/generateObjectPath/index.d.ts +1 -0
  226. package/toPlainError/utils/generateObjectPath/index.js +1 -0
  227. package/toPlainError/utils/index.d.ts +2 -0
  228. package/toPlainError/utils/index.js +2 -0
  229. package/transform/index.d.ts +1 -0
  230. package/transform/index.js +1 -0
  231. package/transform/transform.d.ts +26 -0
  232. package/transform/transform.js +16 -0
  233. package/when/index.d.ts +1 -0
  234. package/when/index.js +1 -0
  235. package/when/when.d.ts +47 -0
  236. package/when/when.js +29 -0
  237. package/compose/compose.d.ts +0 -7
  238. package/composeSome/composeSome.d.ts +0 -8
  239. package/composeSome/composeSome.js +0 -25
  240. package/composeSome/index.d.ts +0 -1
  241. package/composeSome/index.js +0 -1
  242. package/constants.d.ts +0 -2
  243. package/constants.js +0 -2
  244. package/createRule/createRule.d.ts +0 -14
  245. package/createRule/createRule.js +0 -12
  246. package/isDate/index.d.ts +0 -1
  247. package/isDate/index.js +0 -1
  248. package/isDate/isDate.d.ts +0 -10
  249. package/isDate/isDate.js +0 -23
  250. package/isEmail/index.d.ts +0 -1
  251. package/isEmail/index.js +0 -1
  252. package/isEmail/isEmail.d.ts +0 -13
  253. package/isEmail/isEmail.js +0 -25
  254. package/isINNIP/index.d.ts +0 -1
  255. package/isINNIP/index.js +0 -1
  256. package/isINNIP/isINNIP.d.ts +0 -10
  257. package/isINNIP/isINNIP.js +0 -42
  258. package/isINNUL/index.d.ts +0 -1
  259. package/isINNUL/index.js +0 -1
  260. package/isINNUL/isINNUL.d.ts +0 -10
  261. package/isINNUL/isINNUL.js +0 -37
  262. package/isKPP/index.d.ts +0 -1
  263. package/isKPP/index.js +0 -1
  264. package/isKPP/isKPP.d.ts +0 -7
  265. package/isKPP/isKPP.js +0 -19
  266. package/isMaxLength/index.d.ts +0 -1
  267. package/isMaxLength/index.js +0 -1
  268. package/isMaxLength/isMaxLength.d.ts +0 -18
  269. package/isMaxLength/isMaxLength.js +0 -34
  270. package/isMaxValue/index.d.ts +0 -1
  271. package/isMaxValue/index.js +0 -1
  272. package/isMaxValue/isMaxValue.d.ts +0 -17
  273. package/isMaxValue/isMaxValue.js +0 -35
  274. package/isMaybeNumber/index.d.ts +0 -1
  275. package/isMaybeNumber/index.js +0 -1
  276. package/isMaybeNumber/isMaybeNumber.d.ts +0 -10
  277. package/isMaybeNumber/isMaybeNumber.js +0 -23
  278. package/isMinLength/index.d.ts +0 -1
  279. package/isMinLength/index.js +0 -1
  280. package/isMinLength/isMinLength.d.ts +0 -18
  281. package/isMinLength/isMinLength.js +0 -34
  282. package/isMinValue/index.d.ts +0 -1
  283. package/isMinValue/index.js +0 -1
  284. package/isMinValue/isMinValue.d.ts +0 -17
  285. package/isMinValue/isMinValue.js +0 -35
  286. package/isMobilePhone/index.d.ts +0 -1
  287. package/isMobilePhone/index.js +0 -1
  288. package/isMobilePhone/isMobilePhone.d.ts +0 -10
  289. package/isMobilePhone/isMobilePhone.js +0 -20
  290. package/isOGRNIP/index.d.ts +0 -1
  291. package/isOGRNIP/index.js +0 -1
  292. package/isOGRNIP/isOGRNIP.d.ts +0 -10
  293. package/isOGRNIP/isOGRNIP.js +0 -29
  294. package/isOGRNUL/index.d.ts +0 -1
  295. package/isOGRNUL/index.js +0 -1
  296. package/isOGRNUL/isOGRNUL.d.ts +0 -10
  297. package/isOGRNUL/isOGRNUL.js +0 -29
  298. package/isRequired/index.d.ts +0 -1
  299. package/isRequired/index.js +0 -1
  300. package/isRequired/isRequired.d.ts +0 -11
  301. package/isRequired/isRequired.js +0 -23
  302. package/isSNILS/index.d.ts +0 -1
  303. package/isSNILS/index.js +0 -1
  304. package/isSNILS/isSNILS.d.ts +0 -10
  305. package/types.d.ts +0 -4
  306. package/utils/isEmptyString.d.ts +0 -4
  307. package/utils/isEmptyString.js +0 -6
  308. package/yupAdapter/index.d.ts +0 -1
  309. package/yupAdapter/index.js +0 -1
  310. package/yupAdapter/yupAdapter.d.ts +0 -8
  311. package/yupAdapter/yupAdapter.js +0 -11
  312. /package/{compose → core/compose}/index.d.ts +0 -0
  313. /package/{compose → core/compose}/index.js +0 -0
  314. /package/{types.js → core/context/types.js} +0 -0
  315. /package/{createRule → core/rule/createRule}/index.d.ts +0 -0
  316. /package/{createRule → core/rule/createRule}/index.js +0 -0
@@ -0,0 +1,8 @@
1
+ import { createErrorCode } from '../core';
2
+ export const INN_IP_ERROR_INFO = {
3
+ code: createErrorCode('innIP'),
4
+ message: 'Некорректный ИНН ИП',
5
+ };
6
+ export const INN_IP_LENGTH = 12;
7
+ export const FIRST_INN_IP_DECODING = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8];
8
+ export const SECOND_INN_IP_DECODING = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8];
@@ -0,0 +1,2 @@
1
+ export * from './innIP';
2
+ export * from './constants';
package/innIP/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './innIP';
2
+ export * from './constants';
@@ -0,0 +1,25 @@
1
+ import { CommonRuleParams } from '../core';
2
+ type InnIPParams = CommonRuleParams<string> & {
3
+ /**
4
+ * @description Замена стандартного сообщения ошибки.
5
+ */
6
+ message?: string;
7
+ };
8
+ /**
9
+ * @description Проверяет валиден ли ИНН ИП
10
+ * @example
11
+ * ```ts
12
+ * const validate = string(innIP());
13
+ * validate('384212952720');
14
+ * ```
15
+ */
16
+ export declare const innIP: <TValues>(params?: InnIPParams) => (value: string, prevCtx?: Readonly<{
17
+ global: Readonly<{
18
+ values: TValues;
19
+ overrides: Readonly<{
20
+ objectIsPartial: boolean;
21
+ }>;
22
+ }>;
23
+ createError: ({ message, code }: import("../core").ErrorInfo) => import("../core").ValidationSimpleError<{}>;
24
+ }> | undefined) => import("../core").ValidationResult;
25
+ export {};
package/innIP/innIP.js ADDED
@@ -0,0 +1,40 @@
1
+ import { createRule, isStringOfZeros } from '../core';
2
+ import { FIRST_INN_IP_DECODING, INN_IP_ERROR_INFO, INN_IP_LENGTH, SECOND_INN_IP_DECODING, } from './constants';
3
+ const calcFirstCheckSumForInnIP = (arrSymbols) => (arrSymbols
4
+ .slice(0, -2)
5
+ .reduce((sum, symbol, index) => FIRST_INN_IP_DECODING[index] * Number(symbol) + sum, 0) %
6
+ 11) %
7
+ 10;
8
+ const calcSecondCheckSumForInnIP = (arrSymbols) => (arrSymbols
9
+ .slice(0, -1)
10
+ .reduce((sum, symbol, index) => SECOND_INN_IP_DECODING[index] * Number(symbol) + sum, 0) %
11
+ 11) %
12
+ 10;
13
+ /**
14
+ * @description Проверяет валиден ли ИНН ИП
15
+ * @example
16
+ * ```ts
17
+ * const validate = string(innIP());
18
+ * validate('384212952720');
19
+ * ```
20
+ */
21
+ export const innIP = (params) => createRule((value, ctx) => {
22
+ const createInnIPError = () => ctx.createError({
23
+ message: (params === null || params === void 0 ? void 0 : params.message) || INN_IP_ERROR_INFO.message,
24
+ code: INN_IP_ERROR_INFO.code,
25
+ });
26
+ if (isStringOfZeros(value)) {
27
+ return createInnIPError();
28
+ }
29
+ if (value.length !== INN_IP_LENGTH) {
30
+ return createInnIPError();
31
+ }
32
+ const arrSymbols = value.split('');
33
+ const firstChecksum = calcFirstCheckSumForInnIP(arrSymbols);
34
+ const secondChecksum = calcSecondCheckSumForInnIP(arrSymbols);
35
+ if (Number(value[10]) !== firstChecksum &&
36
+ Number(value[11]) !== secondChecksum) {
37
+ return createInnIPError();
38
+ }
39
+ return undefined;
40
+ }, { exclude: params === null || params === void 0 ? void 0 : params.exclude });
@@ -0,0 +1,4 @@
1
+ import { ErrorInfo } from '../core';
2
+ export declare const INN_UL_ERROR_INFO: ErrorInfo;
3
+ export declare const INN_UL_LENGTH = 10;
4
+ export declare const INN_UL_DECODING: number[];
@@ -0,0 +1,7 @@
1
+ import { createErrorCode } from '../core';
2
+ export const INN_UL_ERROR_INFO = {
3
+ code: createErrorCode('innUL'),
4
+ message: 'Некорректный ИНН ЮЛ',
5
+ };
6
+ export const INN_UL_LENGTH = 10;
7
+ export const INN_UL_DECODING = [2, 4, 10, 3, 5, 9, 4, 6, 8];
@@ -0,0 +1,2 @@
1
+ export * from './innUL';
2
+ export * from './constants';
package/innUL/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './innUL';
2
+ export * from './constants';
@@ -0,0 +1,25 @@
1
+ import { CommonRuleParams } from '../core';
2
+ type InnULParams = CommonRuleParams<string> & {
3
+ /**
4
+ * @description Замена стандартного сообщения ошибки.
5
+ */
6
+ message?: string;
7
+ };
8
+ /**
9
+ * @description Проверяет валиден ли ИНН ЮЛ
10
+ * @example
11
+ * ```ts
12
+ * const validate = string(innUL());
13
+ * validate('7728168971');
14
+ * ```
15
+ */
16
+ export declare const innUL: <TValues>(params?: InnULParams) => (value: string, prevCtx?: Readonly<{
17
+ global: Readonly<{
18
+ values: TValues;
19
+ overrides: Readonly<{
20
+ objectIsPartial: boolean;
21
+ }>;
22
+ }>;
23
+ createError: ({ message, code }: import("../core").ErrorInfo) => import("../core").ValidationSimpleError<{}>;
24
+ }> | undefined) => import("../core").ValidationResult;
25
+ export {};
package/innUL/innUL.js ADDED
@@ -0,0 +1,36 @@
1
+ import { createRule, isStringOfZeros } from '../core';
2
+ import { INN_UL_DECODING, INN_UL_ERROR_INFO, INN_UL_LENGTH } from './constants';
3
+ const calcCheckSumForInnUl = (arrSymbols) => (arrSymbols
4
+ .slice(0, -1)
5
+ .reduce((sum, symbol, index) => INN_UL_DECODING[index] * Number(symbol) + sum, 0) %
6
+ 11) %
7
+ 10;
8
+ /**
9
+ * @description Проверяет валиден ли ИНН ЮЛ
10
+ * @example
11
+ * ```ts
12
+ * const validate = string(innUL());
13
+ * validate('7728168971');
14
+ * ```
15
+ */
16
+ export const innUL = (params) => createRule((value, ctx) => {
17
+ const createInnUlError = () => ctx.createError({
18
+ message: (params === null || params === void 0 ? void 0 : params.message) || INN_UL_ERROR_INFO.message,
19
+ code: INN_UL_ERROR_INFO.code,
20
+ });
21
+ if (isStringOfZeros(value)) {
22
+ return createInnUlError();
23
+ }
24
+ if (value.length !== INN_UL_LENGTH) {
25
+ return createInnUlError();
26
+ }
27
+ const arrSymbols = value.split('');
28
+ if (arrSymbols.some((symbol) => isNaN(Number(symbol)))) {
29
+ return createInnUlError();
30
+ }
31
+ const checksum = calcCheckSumForInnUl(arrSymbols);
32
+ if (Number(value[9]) !== checksum) {
33
+ return createInnUlError();
34
+ }
35
+ return undefined;
36
+ }, { exclude: params === null || params === void 0 ? void 0 : params.exclude });
@@ -0,0 +1,3 @@
1
+ import { ErrorInfo } from '../core';
2
+ export declare const INVALID_KPP_ERROR_INFO: ErrorInfo;
3
+ export declare const KPP_REGEX: RegExp;
@@ -0,0 +1,6 @@
1
+ import { createErrorCode } from '../core';
2
+ export const INVALID_KPP_ERROR_INFO = {
3
+ code: createErrorCode('kpp-invalid'),
4
+ message: 'Некорректный КПП',
5
+ };
6
+ export const KPP_REGEX = /^(\d{4}([A-Z]|\d){2}\d{3})$/;
package/kpp/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './kpp';
package/kpp/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './constants';
2
+ export * from './kpp';
package/kpp/kpp.d.ts ADDED
@@ -0,0 +1,25 @@
1
+ import { CommonRuleParams } from '../core';
2
+ type KPPParams = CommonRuleParams<string> & {
3
+ /**
4
+ * @description Замена стандартного сообщения ошибки.
5
+ */
6
+ message?: string;
7
+ };
8
+ /**
9
+ * @description Проверяет валидность кода КПП
10
+ * @example
11
+ * ```ts
12
+ * const validate = string(kpp());
13
+ * validate('770201001');
14
+ * ```
15
+ */
16
+ export declare const kpp: <TValues>(params?: KPPParams) => (value: string, prevCtx?: Readonly<{
17
+ global: Readonly<{
18
+ values: TValues;
19
+ overrides: Readonly<{
20
+ objectIsPartial: boolean;
21
+ }>;
22
+ }>;
23
+ createError: ({ message, code }: import("../core").ErrorInfo) => import("../core").ValidationSimpleError<{}>;
24
+ }> | undefined) => import("../core").ValidationResult;
25
+ export {};
package/kpp/kpp.js ADDED
@@ -0,0 +1,16 @@
1
+ import { createRule, isStringOfZeros } from '../core';
2
+ import { INVALID_KPP_ERROR_INFO, KPP_REGEX } from './constants';
3
+ /**
4
+ * @description Проверяет валидность кода КПП
5
+ * @example
6
+ * ```ts
7
+ * const validate = string(kpp());
8
+ * validate('770201001');
9
+ * ```
10
+ */
11
+ export const kpp = (params) => createRule((value, ctx) => {
12
+ if (isStringOfZeros(value) || !KPP_REGEX.test(value)) {
13
+ return ctx.createError(Object.assign(Object.assign({}, INVALID_KPP_ERROR_INFO), { message: (params === null || params === void 0 ? void 0 : params.message) || INVALID_KPP_ERROR_INFO.message }));
14
+ }
15
+ return undefined;
16
+ }, { exclude: params === null || params === void 0 ? void 0 : params.exclude });
@@ -0,0 +1,5 @@
1
+ import { ErrorCode } from '../core';
2
+ export declare const STRING_MAX_ERROR_CODE: ErrorCode;
3
+ export declare const NUMBER_MAX_ERROR_CODE: ErrorCode;
4
+ export declare const DATE_MAX_ERROR_CODE: ErrorCode;
5
+ export declare const ARRAY_MAX_ERROR_CODE: ErrorCode;
@@ -0,0 +1,5 @@
1
+ import { createErrorCode } from '../core';
2
+ export const STRING_MAX_ERROR_CODE = createErrorCode('string-max');
3
+ export const NUMBER_MAX_ERROR_CODE = createErrorCode('number-max');
4
+ export const DATE_MAX_ERROR_CODE = createErrorCode('date-max');
5
+ export const ARRAY_MAX_ERROR_CODE = createErrorCode('array-max');
package/max/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './max';
2
+ export * from './constants';
package/max/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './max';
2
+ export * from './constants';
package/max/max.d.ts ADDED
@@ -0,0 +1,26 @@
1
+ import { ValidationContext, createRule } from '../core';
2
+ type BaseMaxValidationTypes = number | string | Array<unknown>;
3
+ type CommonThreshold = number | Date;
4
+ type MaxParams<ValidationType> = {
5
+ /**
6
+ * @description Сообщение ошибки
7
+ */
8
+ getMessage?: (threshold: CommonThreshold, value: ValidationType, ctx: ValidationContext<unknown>) => string;
9
+ };
10
+ /**
11
+ * @description Проверяет значение на соответствие максимуму. Работает с: string, array, Date, number
12
+ * @param threshold - верхний доступный порог value
13
+ * @example
14
+ * ```ts
15
+ * string(max(22));
16
+ *
17
+ * number(max(22));
18
+ *
19
+ * array(max(2)));
20
+ *
21
+ * date(max(new Date())));
22
+ * ```
23
+ */
24
+ export declare function max<ValidationType extends Date>(threshold: Date, params?: MaxParams<ValidationType>): ReturnType<typeof createRule<Date, unknown>>;
25
+ export declare function max<ValidationType extends BaseMaxValidationTypes>(threshold: number, params?: MaxParams<ValidationType>): ReturnType<typeof createRule<BaseMaxValidationTypes, unknown>>;
26
+ export {};
package/max/max.js ADDED
@@ -0,0 +1,42 @@
1
+ import { createRule, resetTime } from '../core';
2
+ import { ARRAY_MAX_ERROR_CODE, DATE_MAX_ERROR_CODE, NUMBER_MAX_ERROR_CODE, STRING_MAX_ERROR_CODE, } from './constants';
3
+ export function max(threshold, params) {
4
+ return createRule((value, ctx) => {
5
+ const getMessage = (typeMessage) => (params === null || params === void 0 ? void 0 : params.getMessage)
6
+ ? params.getMessage(threshold, value, ctx)
7
+ : typeMessage;
8
+ if (value instanceof Date && threshold instanceof Date) {
9
+ return resetTime(value) <= resetTime(threshold)
10
+ ? undefined
11
+ : ctx.createError({
12
+ code: DATE_MAX_ERROR_CODE,
13
+ message: getMessage(`Не позднее ${threshold.toLocaleDateString('ru')}`),
14
+ });
15
+ }
16
+ if (threshold instanceof Date) {
17
+ return undefined;
18
+ }
19
+ if (typeof value === 'string') {
20
+ const isError = value.trim().length > threshold;
21
+ return isError
22
+ ? ctx.createError({
23
+ code: STRING_MAX_ERROR_CODE,
24
+ message: getMessage(`Макс. символов: ${threshold}`),
25
+ })
26
+ : undefined;
27
+ }
28
+ if (Array.isArray(value) && value.length > threshold) {
29
+ return ctx.createError({
30
+ code: ARRAY_MAX_ERROR_CODE,
31
+ message: getMessage(`Не меньше ${threshold}`),
32
+ });
33
+ }
34
+ if (typeof value === 'number' && value > threshold) {
35
+ return ctx.createError({
36
+ code: NUMBER_MAX_ERROR_CODE,
37
+ message: getMessage(`Не меньше ${threshold}`),
38
+ });
39
+ }
40
+ return undefined;
41
+ });
42
+ }
@@ -0,0 +1,5 @@
1
+ import { ErrorCode } from '../core';
2
+ export declare const STRING_MIN_ERROR_CODE: ErrorCode;
3
+ export declare const NUMBER_MIN_ERROR_CODE: ErrorCode;
4
+ export declare const DATE_MIN_ERROR_CODE: ErrorCode;
5
+ export declare const ARRAY_MIN_ERROR_CODE: ErrorCode;
@@ -0,0 +1,5 @@
1
+ import { createErrorCode } from '../core';
2
+ export const STRING_MIN_ERROR_CODE = createErrorCode('string-min');
3
+ export const NUMBER_MIN_ERROR_CODE = createErrorCode('number-min');
4
+ export const DATE_MIN_ERROR_CODE = createErrorCode('date-min');
5
+ export const ARRAY_MIN_ERROR_CODE = createErrorCode('array-min');
package/min/index.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export * from './min';
2
+ export * from './constants';
package/min/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './min';
2
+ export * from './constants';
package/min/min.d.ts ADDED
@@ -0,0 +1,26 @@
1
+ import { ValidationContext, createRule } from '../core';
2
+ type BaseMinValidationTypes = number | string | Array<unknown>;
3
+ type CommonThreshold = number | Date;
4
+ type MinParams<ValidationType> = {
5
+ /**
6
+ * @description Сообщение ошибки
7
+ */
8
+ getMessage?: (threshold: CommonThreshold, value: ValidationType, ctx: ValidationContext<unknown>) => string;
9
+ };
10
+ /**
11
+ * @description Проверяет значение на соответствие минимуму. Работает с: string, array, Date, number
12
+ * @param threshold - нижний доступный порог value
13
+ * @example
14
+ * ```ts
15
+ * string(min(22));
16
+ *
17
+ * number(min(22));
18
+ *
19
+ * array(min(2)));
20
+ *
21
+ * date(min(new Date())));
22
+ * ```
23
+ */
24
+ export declare function min<ValidationType extends Date>(threshold: Date, params?: MinParams<ValidationType>): ReturnType<typeof createRule<Date, unknown>>;
25
+ export declare function min<ValidationType extends BaseMinValidationTypes>(threshold: number, params?: MinParams<ValidationType>): ReturnType<typeof createRule<BaseMinValidationTypes, unknown>>;
26
+ export {};
package/min/min.js ADDED
@@ -0,0 +1,42 @@
1
+ import { createRule, resetTime } from '../core';
2
+ import { ARRAY_MIN_ERROR_CODE, DATE_MIN_ERROR_CODE, NUMBER_MIN_ERROR_CODE, STRING_MIN_ERROR_CODE, } from './constants';
3
+ export function min(threshold, params) {
4
+ return createRule((value, ctx) => {
5
+ const getMessage = (typeMessage) => (params === null || params === void 0 ? void 0 : params.getMessage)
6
+ ? params.getMessage(threshold, value, ctx)
7
+ : typeMessage;
8
+ if (value instanceof Date && threshold instanceof Date) {
9
+ return resetTime(value) >= resetTime(threshold)
10
+ ? undefined
11
+ : ctx.createError({
12
+ code: DATE_MIN_ERROR_CODE,
13
+ message: getMessage(`Не раньше ${threshold.toLocaleDateString('ru')}`),
14
+ });
15
+ }
16
+ if (threshold instanceof Date) {
17
+ return undefined;
18
+ }
19
+ if (typeof value === 'string') {
20
+ const isError = value.trim().length < threshold;
21
+ return isError
22
+ ? ctx.createError({
23
+ code: STRING_MIN_ERROR_CODE,
24
+ message: getMessage(`Мин. символов: ${threshold}`),
25
+ })
26
+ : undefined;
27
+ }
28
+ if (Array.isArray(value) && value.length < threshold) {
29
+ return ctx.createError({
30
+ code: ARRAY_MIN_ERROR_CODE,
31
+ message: getMessage(`Не больше ${threshold}`),
32
+ });
33
+ }
34
+ if (typeof value === 'number' && value < threshold) {
35
+ return ctx.createError({
36
+ code: NUMBER_MIN_ERROR_CODE,
37
+ message: getMessage(`Не больше ${threshold}`),
38
+ });
39
+ }
40
+ return undefined;
41
+ });
42
+ }
@@ -0,0 +1,3 @@
1
+ import { ErrorInfo } from '../core';
2
+ export declare const MOBILE_PHONE_ERROR_INFO: ErrorInfo;
3
+ export declare const MOBILE_PHONE_REGEX: RegExp;
@@ -0,0 +1,6 @@
1
+ import { createErrorCode } from '../core';
2
+ export const MOBILE_PHONE_ERROR_INFO = {
3
+ code: createErrorCode('mobilePhone'),
4
+ message: 'Некорректный номер телефона',
5
+ };
6
+ export const MOBILE_PHONE_REGEX = /^(79)\d{9}$/;
@@ -0,0 +1,2 @@
1
+ export * from './mobilePhone';
2
+ export * from './constants';
@@ -0,0 +1,2 @@
1
+ export * from './mobilePhone';
2
+ export * from './constants';
@@ -0,0 +1,27 @@
1
+ import { CommonRuleParams } from '../core';
2
+ type MobilePhoneParams = CommonRuleParams<string> & {
3
+ /**
4
+ * @description Замена стандартного сообщения ошибки.
5
+ */
6
+ message?: string;
7
+ };
8
+ /**
9
+ * @description
10
+ * Проверяет валиден ли мобильный телефон.
11
+ * Валидный телефон начинается с "79" и не содержит символов, кроме цифр.
12
+ * @example
13
+ * ```ts
14
+ * const validate = string(mobilePhone());
15
+ * validate('79999999999');
16
+ * ```
17
+ */
18
+ export declare const mobilePhone: <TValues>(params?: MobilePhoneParams) => (value: string, prevCtx?: Readonly<{
19
+ global: Readonly<{
20
+ values: TValues;
21
+ overrides: Readonly<{
22
+ objectIsPartial: boolean;
23
+ }>;
24
+ }>;
25
+ createError: ({ message, code }: import("../core").ErrorInfo) => import("../core").ValidationSimpleError<{}>;
26
+ }> | undefined) => import("../core").ValidationResult;
27
+ export {};
@@ -0,0 +1,21 @@
1
+ import { createRule } from '../core';
2
+ import { MOBILE_PHONE_ERROR_INFO, MOBILE_PHONE_REGEX } from './constants';
3
+ /**
4
+ * @description
5
+ * Проверяет валиден ли мобильный телефон.
6
+ * Валидный телефон начинается с "79" и не содержит символов, кроме цифр.
7
+ * @example
8
+ * ```ts
9
+ * const validate = string(mobilePhone());
10
+ * validate('79999999999');
11
+ * ```
12
+ */
13
+ export const mobilePhone = (params) => createRule((value, ctx) => {
14
+ if (!MOBILE_PHONE_REGEX.test(value)) {
15
+ return ctx.createError({
16
+ message: (params === null || params === void 0 ? void 0 : params.message) || MOBILE_PHONE_ERROR_INFO.message,
17
+ code: MOBILE_PHONE_ERROR_INFO.code,
18
+ });
19
+ }
20
+ return undefined;
21
+ }, { exclude: params === null || params === void 0 ? void 0 : params.exclude });
@@ -0,0 +1,4 @@
1
+ import { ErrorInfo } from '../core';
2
+ export declare const NUMBER_TYPE_ERROR_INFO: ErrorInfo;
3
+ export declare const NAN_NUMBER_ERROR_INFO: ErrorInfo;
4
+ export declare const INFINITY_NUMBER_ERROR_INFO: ErrorInfo;
@@ -0,0 +1,13 @@
1
+ import { createErrorCode } from '../core';
2
+ export const NUMBER_TYPE_ERROR_INFO = {
3
+ code: createErrorCode('number-type'),
4
+ message: 'Не число',
5
+ };
6
+ export const NAN_NUMBER_ERROR_INFO = {
7
+ code: createErrorCode('number-nan'),
8
+ message: 'Некорректное число',
9
+ };
10
+ export const INFINITY_NUMBER_ERROR_INFO = {
11
+ code: createErrorCode('number-infinity'),
12
+ message: 'Бесконечное число',
13
+ };
@@ -0,0 +1,2 @@
1
+ export * from './number';
2
+ export * from './constants';
@@ -0,0 +1,2 @@
1
+ export * from './number';
2
+ export * from './constants';
@@ -0,0 +1,19 @@
1
+ import { ValidationRule } from '../core';
2
+ type AdditionalDefOptions = {
3
+ nanErrorMessage?: string;
4
+ infinityErrorMessage?: string;
5
+ };
6
+ /**
7
+ * @description Guard для number. Проверяет значение на тип number и NaN, Infinity
8
+ * Для NaN и Infinity возвращаются отдельные ошибки
9
+ * @param rules - правила, валидирующие number или unknown value
10
+ * @example
11
+ * ```ts
12
+ * const validate = number(min(22));
13
+ *
14
+ * // undefined
15
+ * validate(24);
16
+ * ```
17
+ */
18
+ export declare const number: <TValues>(...rules: ValidationRule<number, TValues>[]) => import("../core").Guard<number, TValues, AdditionalDefOptions>;
19
+ export {};
@@ -0,0 +1,26 @@
1
+ import { compose, createGuard } from '../core';
2
+ import { INFINITY_NUMBER_ERROR_INFO, NAN_NUMBER_ERROR_INFO, NUMBER_TYPE_ERROR_INFO, } from './constants';
3
+ /**
4
+ * @description Guard для number. Проверяет значение на тип number и NaN, Infinity
5
+ * Для NaN и Infinity возвращаются отдельные ошибки
6
+ * @param rules - правила, валидирующие number или unknown value
7
+ * @example
8
+ * ```ts
9
+ * const validate = number(min(22));
10
+ *
11
+ * // undefined
12
+ * validate(24);
13
+ * ```
14
+ */
15
+ export const number = (...rules) => createGuard((value, ctx, { typeErrorMessage, nanErrorMessage, infinityErrorMessage }) => {
16
+ if (typeof value !== 'number') {
17
+ return ctx.createError(Object.assign(Object.assign({}, NUMBER_TYPE_ERROR_INFO), { message: typeErrorMessage || NUMBER_TYPE_ERROR_INFO.message }));
18
+ }
19
+ if (Number.isNaN(value)) {
20
+ return ctx.createError(Object.assign(Object.assign({}, NAN_NUMBER_ERROR_INFO), { message: nanErrorMessage || NAN_NUMBER_ERROR_INFO.message }));
21
+ }
22
+ if (!Number.isFinite(value)) {
23
+ return ctx.createError(Object.assign(Object.assign({}, INFINITY_NUMBER_ERROR_INFO), { message: infinityErrorMessage || INFINITY_NUMBER_ERROR_INFO.message }));
24
+ }
25
+ return compose(...rules)(value, ctx);
26
+ });
@@ -0,0 +1,2 @@
1
+ import { ErrorInfo } from '../core';
2
+ export declare const OBJECT_TYPE_ERROR_INFO: ErrorInfo;
@@ -0,0 +1,5 @@
1
+ import { createErrorCode } from '../core';
2
+ export const OBJECT_TYPE_ERROR_INFO = {
3
+ code: createErrorCode('object'),
4
+ message: 'Не является объектом',
5
+ };
@@ -0,0 +1,2 @@
1
+ export * from './object';
2
+ export * from './constants';
@@ -0,0 +1,2 @@
1
+ export * from './object';
2
+ export * from './constants';
@@ -0,0 +1 @@
1
+ export * from './isEmptyErrors';
@@ -0,0 +1 @@
1
+ export * from './isEmptyErrors';
@@ -0,0 +1,5 @@
1
+ import { ErrorMap } from '../../core';
2
+ /**
3
+ * @description Проверяет есть ли errorMap ошибки
4
+ */
5
+ export declare const isEmptyErrors: (errorMap: ErrorMap) => boolean;
@@ -0,0 +1,4 @@
1
+ /**
2
+ * @description Проверяет есть ли errorMap ошибки
3
+ */
4
+ export const isEmptyErrors = (errorMap) => Object.values(errorMap).every((error) => error === undefined);