import { Failure } from '../base'; import { Validator, ValidatorOptions } from './validator'; import { ValidatorBase, ValidatorBaseConstructorParams } from './validatorBase'; /** * Per-property {@link Validation.Validator | validators} for each of the properties in ``. * @public */ export type FieldValidators = { [key in keyof T]: Validator; }; /** * Options for an {@link Validation.Classes.ObjectValidator | ObjectValidator}. * @public */ export interface ObjectValidatorOptions extends ValidatorOptions { /** * If present, lists optional fields. Missing non-optional fields cause an error. */ optionalFields?: (keyof T)[]; /** * If true, unrecognized fields yield an error. If false or undefined (default), * unrecognized fields are ignored. */ strict?: boolean; } /** * Options for the {@link Validation.Classes.ObjectValidator | ObjectValidator} constructor. * @public */ export interface ObjectValidatorConstructorParams extends ValidatorBaseConstructorParams { /** * A {@link Validation.Classes.FieldValidators | FieldValidators} object specifying a * {@link Validation.Validator | Validator} for each of the expected properties * of a result object. */ fields: FieldValidators; /** * Optional additional {@link Validation.Classes.ObjectValidatorOptions | ValidatorOptions} to * configure validation. */ options?: ObjectValidatorOptions; } /** * In-place {@link Validation.Validator | Validator} for an object of type ``. * @remarks * By default, succeeds if all of the required fields exist and are validate, and fails if * any required fields do not exist or are invalid. See {@link Validation.Classes.ObjectValidatorOptions} * for other validation options. * @public */ export declare class ObjectValidator extends ValidatorBase { /** * A {@link Validation.Classes.FieldValidators | FieldValidators} object specifying a * {@link Validation.Validator | Validator} for each of the expected properties */ readonly fields: FieldValidators; /** * {@link Validation.Classes.ObjectValidatorOptions | Options} which apply to this * validator. */ readonly options: ObjectValidatorOptions; /** * @internal */ protected readonly _innerValidators: FieldValidators; /** * @internal */ protected readonly _allowedFields?: Set; /** * Constructs a new {@link Validation.Classes.ObjectValidator | ObjectValidator}. * @param fields - A {@link Validation.Classes.FieldValidators | FieldValidators} containing * a {@link Validation.Validator | Validator} for each field. * @param options - An optional {@link Validation.Classes.ObjectValidatorOptions} to configure * validation. */ constructor(params: ObjectValidatorConstructorParams); /** * Creates the actual {@link Validation.Classes.FieldValidators | FieldValidators} to be * used by this converter by applying any options or traits defined in the options * to the field converters passed to the constructor. * @param fields - The base {@link Validation.Classes.FieldValidators | FieldValidators} passed * in to the constructor. * @param options - The {@link Validation.Classes.ObjectValidatorOptions | object validator options} * passed in to the constructor. * @returns A new {@link Validation.Classes.FieldValidators | FieldValidators} with the fully-configured * individual {@link Validation.Validator | field validators} to be applied. * @internal */ protected static _resolveValidators(fields: FieldValidators, options?: ObjectValidatorOptions): FieldValidators; /** * Creates a new {@link Validation.Classes.ObjectValidator | ObjectValidator} derived from this one but with * new optional properties as specified by a supplied * {@link Validation.Classes.ObjectValidatorOptions | ObjectValidatorOptions}. * @param options - The {@link Validation.Classes.ObjectValidatorOptions | options} to be applied to the new * {@link Validation.Classes.ObjectValidator | validator}. * @returns A new {@link Validation.Classes.ObjectValidator | ObjectValidator} with the additional optional * source properties. */ partial(options?: ObjectValidatorOptions): ObjectValidator, TC>; /** * Creates a new {@link Validation.Classes.ObjectValidator | ObjectValidator} derived from this one but with * new optional properties as specified by a supplied array of `keyof T`. * @param addOptionalProperties - The keys to be made optional. * @returns A new {@link Validation.Classes.ObjectValidator | ObjectValidator} with the additional optional * source properties. */ addPartial(addOptionalFields: (keyof T)[]): ObjectValidator, TC>; /** * {@inheritdoc Validation.ValidatorBase._validate} * @internal */ protected _validate(from: unknown, context?: TC, self?: Validator): boolean | Failure; } //# sourceMappingURL=object.d.ts.map