import type { StandardSchemaV1 } from '@standard-schema/spec'; import { ArgumentMetadata, PipeTransform } from '../interfaces/features/pipe-transform.interface.js'; import { ErrorHttpStatusCode } from '../utils/http-error-by-code.util.js'; /** * @publicApi */ export interface StandardSchemaValidationPipeOptions { /** * If true, the pipe will return the value produced by the schema * (which may differ from the input if the schema coerces/transforms values). * If false, the original input value is returned after successful validation. * @default true */ transform?: boolean; /** * If true, the pipe will also validate parameters decorated with custom decorators * (created with `createParamDecorator`). When false, custom parameters are skipped. * @default false */ validateCustomDecorators?: boolean; /** * Options to pass to the standard schema `validate` function. * These options are forwarded as the second argument to the schema's `~standard.validate` method. */ validateOptions?: Record; /** * The HTTP status code to be used in the response when the validation fails. * @default HttpStatus.BAD_REQUEST */ errorHttpStatusCode?: ErrorHttpStatusCode; /** * A factory function that returns an exception object to be thrown * if validation fails. * @param issues The issues returned by the standard schema validation * @returns The exception object */ exceptionFactory?: (issues: readonly StandardSchemaV1.Issue[]) => any; } /** * Defines the built-in StandardSchemaValidation Pipe. * * Uses a standard schema object (conforming to the Standard Schema spec) * attached to the parameter metadata to validate incoming values. * * @see [Standard Schema](https://github.com/standard-schema/standard-schema) * * @publicApi */ export declare class StandardSchemaValidationPipe implements PipeTransform { protected readonly options?: StandardSchemaValidationPipeOptions | undefined; protected isTransformEnabled: boolean; protected validateCustomDecorators: boolean; protected validateOptions: Record | undefined; protected exceptionFactory: (issues: readonly StandardSchemaV1.Issue[]) => any; constructor(options?: StandardSchemaValidationPipeOptions | undefined); /** * Method that validates the incoming value against the standard schema * provided in the parameter metadata. * * @param value currently processed route argument * @param metadata contains metadata about the currently processed route argument */ transform(value: T, metadata: ArgumentMetadata): Promise; /** * Determines whether validation should be performed for the given metadata. * Skips validation for custom decorators unless `validateCustomDecorators` is enabled. * * @param metadata contains metadata about the currently processed route argument * @returns `true` if validation should be performed */ protected toValidate(metadata: ArgumentMetadata): boolean; /** * Validates a value against a standard schema. * Can be overridden to customize validation behavior. * * @param value The value to validate * @param schema The standard schema to validate against * @param options Optional options forwarded to the schema's validate method * @returns The validation result */ protected validate(value: unknown, schema: StandardSchemaV1, options?: Record): Promise> | StandardSchemaV1.Result; /** * Strips dangerous prototype pollution keys from an object. */ protected stripProtoKeys(value: any): void; }