requiredAsync
Creates a modified copy of an object schema that marks all or only the selected entries as required.
const AllKeysSchema = v.requiredAsync<TSchema, TMessage>(schema, message);
const SelectedKeysSchema = v.requiredAsync<TSchema, TKeys, TMessage>(
schema,
keys,
message
);
Generics
TSchemaextends SchemaWithoutPipe<LooseObjectSchemaAsync<ObjectEntriesAsync, ErrorMessage<LooseObjectIssue> | undefined> | ObjectSchemaAsync<ObjectEntriesAsync, ErrorMessage<ObjectIssue> | undefined> | ObjectWithRestSchemaAsync<ObjectEntriesAsync, BaseSchema<unknown, unknown, BaseIssue<unknown>> | BaseSchemaAsync<unknown, unknown, BaseIssue<unknown>>, ErrorMessage<ObjectWithRestIssue> | undefined> | StrictObjectSchemaAsync<ObjectEntriesAsync, ErrorMessage<StrictObjectIssue> | undefined>>TKeysObjectKeys<TSchema>TMessageErrorMessage<NonOptionalIssue> | undefined
Parameters
schemaTSchemakeysTKeymessageTMessage
Explanation
requiredAsync creates a modified copy of the given object schema where all or only the selected keys are required. It is similar to TypeScript's Required utility type.
Because
requiredAsyncchanges the data type of the input and output, it is not allowed to pass a schema that has been modified by thepipeAsyncmethod, as this may cause runtime errors. Please use thepipeAsyncmethod after you have modified the schema withrequiredAsync.
Returns
AllKeysSchemaSchemaWithRequiredAsync<TSchema, undefined, TMessage>SelectedKeysSchemaSchemaWithRequiredAsync<TSchema, TKeys, TMessage>
Examples
The following examples show how requiredAsync can be used.
New task schema
Schema to validate an object containing task details.
import { isOwnerPresent } from '~/api';
const UpdateTaskSchema = v.objectAsync({
owner: v.optionalAsync(
v.pipeAsync(
v.string(),
v.email(),
v.checkAsync(isOwnerPresent, 'The owner is not in the database.')
)
),
title: v.optional(v.pipe(v.string(), v.nonEmpty(), v.maxLength(255))),
description: v.optional(v.pipe(v.string(), v.nonEmpty())),
});
const NewTaskSchema = v.requiredAsync(UpdateTaskSchema);
/*
{
owner: string;
title: string;
description: string;
}
*/
Related
The following APIs can be combined with requiredAsync.
Schemas
array, exactOptional, intersect, lazy, looseObject, looseTuple, map, nonNullable, nonNullish, nonOptional, nullable, nullish, object, objectWithRest, optional, record, set, strictObject, strictTuple, tuple, tupleWithRest, undefinedable, union
Methods
assert, config, fallback, forward, getDefault, getDefaults, getFallback, getFallbacks, keyof, message, omit, partial, pick, unwrap
Actions
brand, check, description, entries, flavor, guard, maxEntries, metadata, minEntries, notEntries, partialCheck, rawCheck, rawTransform, readonly, title, transform
Utils
Async
arrayAsync, checkAsync, exactOptionalAsync, fallbackAsync, forwardAsync, getDefaultsAsync, getFallbacksAsync, intersectAsync, lazyAsync, looseObjectAsync, looseTupleAsync, mapAsync, nonNullableAsync, nonNullishAsync, nonOptionalAsync, nullableAsync, nullishAsync, objectAsync, objectWithRestAsync, optionalAsync, parseAsync, parserAsync, partialAsync, partialCheckAsync, rawCheckAsync, rawTransformAsync, recordAsync, safeParseAsync, safeParserAsync, setAsync, strictObjectAsync, strictTupleAsync, transformAsync, tupleAsync, tupleWithRestAsync, undefinedableAsync, unionAsync
© Fabian Hiller
Licensed under the MIT License.
https://valibot.dev/api/requiredAsync/