@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 +14 -1
- package/index.d.ts +1 -1
- package/index.js +1 -1
- package/optional/index.d.ts +1 -0
- package/optional/index.js +1 -0
- package/optional/optionalAsync/index.d.ts +1 -0
- package/optional/optionalAsync/index.js +1 -0
- package/optional/optionalAsync/optionalAsync.d.ts +6 -0
- package/optional/optionalAsync/optionalAsync.js +18 -0
- package/package.json +1 -1
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';
|
package/optional/index.d.ts
CHANGED
package/optional/index.js
CHANGED
@@ -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
|
+
});
|