Skip to main content
zerotal

Documentation


Documentation / zerotal / validator / FieldRule

Abstract Interface: FieldRule

Defined in: packages/validator/src/FieldRule.ts:27

Extended by

Properties

_def

abstract readonly _def: FieldRuleDefinition

Defined in: packages/validator/src/FieldRule.ts:28

Methods

required()

required(message?): this

Defined in: packages/validator/src/FieldRule.ts:36

Mark this field as required (the default). Useful for readability, for re-asserting after .optional(), or to attach a custom "is required" message:

rule.string().required("Please enter your name").min(2)

Parameters

message?

string

Returns

this


optional()

optional(): this

Defined in: packages/validator/src/FieldRule.ts:42

Returns

this


nullable()

nullable(): this

Defined in: packages/validator/src/FieldRule.ts:47

Returns

this


default()

default(value): this

Defined in: packages/validator/src/FieldRule.ts:52

Parameters

value

unknown

Returns

this


sometimes()

sometimes(): this

Defined in: packages/validator/src/FieldRule.ts:66

Only run this field's rules if the field is present in the input. Absent fields are silently skipped and excluded from the output. Use for optional PATCH fields that should only be validated when provided.

Returns

this

Example

bio: rules.string().sometimes().max(500)

requiredIf()

requiredIf(fieldOrFn, value?): this

Defined in: packages/validator/src/FieldRule.ts:79

Make this field required only when another field equals a specific value.

Parameters

fieldOrFn

string | ((input) => boolean)

value?

unknown

Returns

this

Example

address: rules.string().requiredIf('hasShipping', true)
address: rules.string().requiredIf(input => input.method === 'pickup')

requiredUnless()

requiredUnless(fieldOrFn, value?): this

Defined in: packages/validator/src/FieldRule.ts:98

Make this field required unless another field equals a specific value.

Parameters

fieldOrFn

string | ((input) => boolean)

value?

unknown

Returns

this

Example

phone: rules.string().requiredUnless('contactMethod', 'email')

accepted()

accepted(message?): this

Defined in: packages/validator/src/FieldRule.ts:118

The value must be truthy: true, 1, '1', 'yes', 'on', 'true'. Use for "agree to terms" checkboxes.

Parameters

message?

string

Returns

this

Example

terms: rules.boolean().accepted()

declined()

declined(message?): this

Defined in: packages/validator/src/FieldRule.ts:129

The value must be falsy: false, 0, '0', 'no', 'off', 'false'.

Parameters

message?

string

Returns

this

Example

newsletter: rules.boolean().declined()

custom()

custom(fn, message?): this

Defined in: packages/validator/src/FieldRule.ts:144

Run a custom synchronous or asynchronous validation function. Return true to pass, false for a generic error, or a string as the error message.

Parameters

fn

CustomFn

message?

string

Returns

this

Example

username: rules.string().custom(async (value) => {
  const taken = await Username.isTaken(value as string);
  return taken ? 'This username is already taken.' : true;
})

requiredWith()

requiredWith(fields): this

Defined in: packages/validator/src/FieldRule.ts:157

This field is required when ANY of the listed fields are present in input.

Parameters

fields

string[]

Returns

this

Example

cardCvv: rules.string().requiredWith(['cardNumber', 'cardExpiry'])

requiredWithout()

requiredWithout(fields): this

Defined in: packages/validator/src/FieldRule.ts:169

This field is required when ANY of the listed fields are absent from input.

Parameters

fields

string[]

Returns

this

Example

email: rules.string().requiredWithout(['phone'])

requiredWithAll()

requiredWithAll(fields): this

Defined in: packages/validator/src/FieldRule.ts:178

This field is required when ALL of the listed fields are present.

Parameters

fields

string[]

Returns

this


requiredWithoutAll()

requiredWithoutAll(fields): this

Defined in: packages/validator/src/FieldRule.ts:187

This field is required when ALL of the listed fields are absent.

Parameters

fields

string[]

Returns

this


prohibitedIf()

prohibitedIf(field, value): this

Defined in: packages/validator/src/FieldRule.ts:199

This field must be absent when another field equals the given value.

Parameters

field

string

value

unknown

Returns

this

Example

adminCode: rules.string().prohibitedIf('role', 'guest')

prohibitedUnless()

prohibitedUnless(field, value): this

Defined in: packages/validator/src/FieldRule.ts:210

This field must be absent unless another field equals the given value.

Parameters

field

string

value

unknown

Returns

this

Example

discount: rules.number().prohibitedUnless('role', 'admin')

bail()

bail(): this

Defined in: packages/validator/src/FieldRule.ts:222

Stop validating this field after the first failing rule. Without bail(), all rules are checked and all errors collected.

Returns

this

Example

email: rules.string().email().unique('users', 'email').bail()