@astral/validations 4.8.0 → 4.8.1

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
@@ -1491,6 +1491,7 @@ validate(new Date())
1491
1491
  Guard, поддерживающие асинхронную валидацию имеют постфиксы ```async```:
1492
1492
  - ```objectAsync```
1493
1493
  - ```stringAsync```
1494
+ - ```optionalAsync```
1494
1495
 
1495
1496
  Пример:
1496
1497
 
@@ -1514,9 +1515,21 @@ const validate = objectAsync<Values>({
1514
1515
  message: 'Nickname занят',
1515
1516
  });
1516
1517
  }),
1518
+ fullName: optionalAsync(stringAsync(async (value, ctx) => {
1519
+ const nicknameIsAvailable = await checkNickname(value);
1520
+
1521
+ if (nicknameIsAvailable) {
1522
+ return undefined;
1523
+ }
1524
+
1525
+ return ctx.createError({
1526
+ code: 'nickname-available',
1527
+ message: 'Nickname занят',
1528
+ });
1529
+ })),
1517
1530
  });
1518
1531
 
1519
- const result = await validate({ phone: '79308999999', nickname: 'Vasya' });
1532
+ const result = await validate({ phone: '79308999999', nickname: 'Vasya', fullName: '' });
1520
1533
 
1521
1534
  // { nickname: 'Nickname занят' }
1522
1535
  toPrettyError(result);
package/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { object, objectAsync, OBJECT_TYPE_ERROR_INFO, type Schema, type SchemaValue, type ObjectGuard, type ObjectAsyncGuard, } from './object';
2
- export { optional } from './optional';
2
+ export { optional, optionalAsync } from './optional';
3
3
  export { string, STRING_TYPE_ERROR_INFO, stringAsync } from './string';
4
4
  export { date, INVALID_DATE_ERROR_INFO, DATE_TYPE_ERROR_INFO } from './date';
5
5
  export { number, NAN_NUMBER_ERROR_INFO, NUMBER_TYPE_ERROR_INFO, INFINITY_NUMBER_ERROR_INFO, } from './number';
package/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  export { object, objectAsync, OBJECT_TYPE_ERROR_INFO, } from './object';
2
- export { optional } from './optional';
2
+ export { optional, optionalAsync } from './optional';
3
3
  export { string, STRING_TYPE_ERROR_INFO, stringAsync } from './string';
4
4
  export { date, INVALID_DATE_ERROR_INFO, DATE_TYPE_ERROR_INFO } from './date';
5
5
  export { number, NAN_NUMBER_ERROR_INFO, NUMBER_TYPE_ERROR_INFO, INFINITY_NUMBER_ERROR_INFO, } from './number';
@@ -1 +1,2 @@
1
1
  export * from './optional';
2
+ export * from './optionalAsync';
package/optional/index.js CHANGED
@@ -1 +1,2 @@
1
1
  export * from './optional';
2
+ export * from './optionalAsync';
@@ -0,0 +1 @@
1
+ export * from './optionalAsync';
@@ -0,0 +1 @@
1
+ export * from './optionalAsync';
@@ -0,0 +1,6 @@
1
+ import { AsyncIndependentValidationRule, AsyncValidationRule } from '../../core';
2
+ /**
3
+ * @description Выключает проверку на required в guard. Предназначен для асинхронных правил.
4
+ * @example object({ name: optionalAsync(stringAsync(min(22))) })
5
+ */
6
+ export declare const optionalAsync: <TLastSchemaValues extends Record<string, unknown>>(rule: AsyncValidationRule<unknown, TLastSchemaValues>) => AsyncIndependentValidationRule<unknown, TLastSchemaValues>;
@@ -0,0 +1,18 @@
1
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
2
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3
+ return new (P || (P = Promise))(function (resolve, reject) {
4
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
7
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
8
+ });
9
+ };
10
+ import { callAsyncRule, createContext, } from '../../core';
11
+ // TODO: необходимо добавить возможность использовать вложенные guards
12
+ /**
13
+ * @description Выключает проверку на required в guard. Предназначен для асинхронных правил.
14
+ * @example object({ name: optionalAsync(stringAsync(min(22))) })
15
+ */
16
+ export const optionalAsync = (rule) => (value, ctx) => __awaiter(void 0, void 0, void 0, function* () {
17
+ return callAsyncRule(rule, value, createContext(ctx, value, { isOptional: true }));
18
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@astral/validations",
3
- "version": "4.8.0",
3
+ "version": "4.8.1",
4
4
  "browser": "./index.js",
5
5
  "main": "./index.js",
6
6
  "dependencies": {