Fake Mirrors
    Preparing search index...

    Interface Validator

    Represents a validator.

    Provides type-safe schema validation with Ajv. Supports both safe guards and assertion-based validation.

    interface Validator {
        addSchema(name: string, schema: object): void;
        addSchemas(schemas: ValidatorSchemas): void;
        assertSchema<T>(name: string, data: unknown): asserts data is T;
        getSchema(name: string): object | undefined;
        guardSchema<T>(name: string, data: unknown): data is T;
    }

    Implemented by

    Methods

    • Register a JSON schema with a unique name.

      Parameters

      • name: string

        Unique schema identifier

      • schema: object

        JSON schema object

      Returns void

      Error if schema with name already exists

    • Strict validation using assertion.

      Throws ValidatorError with detailed validation errors on failure. Use this for critical validation in request/response processing.

      Type Parameters

      • T

        Expected data type after validation

      Parameters

      • name: string

        Schema name to validate against

      • data: unknown

        Unknown data to validate

      Returns asserts data is T

      ValidatorError with validation error details

      interface Request {
      method: string
      path: string
      }

      try {
      validator.assertSchema<Request>('request', inputData)
      // TypeScript knows this is Request
      processRequest(inputData.path)
      } catch (error) {
      if (error instanceof ValidatorError) {
      // Detailed error info
      console.log(error.validateErrors)
      }
      }
    • Retrieve a registered JSON schema by name.

      Parameters

      • name: string

        The schema identifier

      Returns object | undefined

      Schema object, or undefined if not found

    • Type-safe validation using type guard.

      Returns false instead of throwing on validation failure. Use this for non-critical validation.

      Type Parameters

      • T

        Expected data type after validation

      Parameters

      • name: string

        Schema name to validate against

      • data: unknown

        Unknown data to validate

      Returns data is T

      true if data matches schema (and narrows type to T)

      interface User {
      id: string
      name: string
      }

      if (validator.guardSchema<User>('user', inputData)) {
      // TypeScript knows this is User
      console.log(inputData.name)
      } else {
      console.log('Invalid user data')
      }