npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

rest-data-validator

v2.1.0

Published

A versatile data validation library for RESTful APIs, supporting a wide range of data types and validation rules.

Downloads

206

Readme

REST Data Validator

Jest Coverage Codecov Package Build Version

REST Data Validator is a versatile library designed to offer comprehensive validation for data in RESTful APIs. It supports a wide range of data types, validation rules, and is designed with extensibility in mind, making it ideal for ensuring data integrity and compliance with API specifications.

For more detailed, visit: .:: Documentation ::.

Package home preview

Features

  • Comprehensive Validation: Supports validation of strings, numbers, emails, dates, enums, files, and custom formats.
  • Decorator-based Validation: Utilizes TypeScript decorators for easy and declarative validation directly in your class models.
  • Schema File Provider: Load and convert schema definitions from JSON or YAML files into validation schemas, allowing for flexible and manageable validation configurations.
  • Extensive Validation Schemas: Offers a wide range of validation schemas to validate various data types and structures in a scalable and flexible manner.
  • Flexible and Extensible: Easily extendable to include custom validation rules and logic.
  • Framework Agnostic: Can be used with any server-side framework or library, such as Express, Koa, or Fastify.
  • Full TypeScript Support: Leverages TypeScript for type safety and enhanced developer experience.
  • Custom Error Messages: Allows defining custom error messages for each validation rule to provide clear and specific feedback.

Installation

Npm:

npm install rest-data-validator@latest

Yarn:

yarn add rest-data-validator@latest

Pnpm:

pnpm add rest-data-validator@latest

Using Decorators for Validation

Decorators provide a declarative way to add validation rules directly to your class properties.

Custom Validation Rules

You can easily extend the library to include custom validation rules and logic.

Schema File Provider

The SchemaFileProvider allows you to externalize your validation schemas into JSON or YAML files. This makes the validation process more flexible and easier to manage, especially for large or complex schemas.

Key Features

  • Load Schemas from Files: Load schema definitions from JSON or YAML files.
  • Convert Definitions to Schemas: Convert loaded schema definitions into validation schemas that can be used throughout your application.

Validation Schemas

REST Data Validator provides a comprehensive set of validation schemas to validate various data types and structures. These schemas are designed to be flexible and reusable, enabling developers to build complex validation logic easily.

Available Schemas

  • String: Validates string values with support for constraints like minimum and maximum length.
  • Number: Validates numerical values with support for constraints like minimum and maximum values.
  • Boolean: Validates boolean values.
  • Object: Validates objects based on a schema definition for each property.
  • Array: Validates arrays and allows setting constraints on the array's length and its elements' schema.
  • Union: Validates a value that can match any one of the provided schemas.
  • Enum: Validates that a value is one of a predefined set of allowed values.
  • Date: Validates date values with support for constraints on the date range.
  • Tuple: Validates arrays with fixed length and specific types at each index.
  • Record: Validates objects where all keys and values match specified schemas.
  • Nullable: Allows a value to be null or satisfy another schema.
  • Any: Accepts any value without restrictions.
  • Lazy: Supports defining schemas that are evaluated lazily, useful for recursive or conditional schemas.
  • Literal: Validates that a value matches a specific literal value.
  • Transform: Allows transforming the value during validation by applying a transformation function before validating.

Rest CLI

Commands

The CLI provides various commands to help you generate and manage validation schemas.

Model Generation

Generate models with predefined validation rules quickly.

Validation Generation

Add validation rules to existing models interactively.

Validators and Decorators

  • ClassValidator: Validates a class based on its decorators.
  • Number: Validates numerical properties.
  • Email: Validates email addresses.
  • Password: Validates password strength.
  • Date: Validates date properties.
  • Enum: Validates that a value is part of a specific enum.
  • File: Validates file properties.
  • Range: Validates that a number is within a specified range.
  • Regex: Validates using a regular expression.
  • Custom: Allows for custom validation logic.
  • Domain: Validates domain names.
  • Array: Validates array properties.
  • Nested: Validates nested objects.
  • Contextual: Contextual validation based on other properties.
  • Dependency: Validation based on other property values.
  • Security: Validates security-related properties.
  • Alpha: Validates that a string contains only letters.
  • Contains: Validates that a string contains a specific substring.
  • BIC: Validates Bank Identification Codes (BIC).
  • ISO31661Alpha2: Validates ISO 3166-1 alpha-2 country codes.

Group-Based Validation

Define validation groups to conditionally apply validation rules.

Sanitizer Functions

Sanitize input data before validation.

Validation Utilities

  • Async Validators: Handle asynchronous validation logic.
  • Nested Validators: Validate nested objects and arrays.
  • Contextual Validators: Apply validation rules based on other properties.
  • Dependency Validators: Ensure properties are validated based on other property values.

Decorators Utilities

  • Accessors Decorator: Validate properties with getter and setter accessors.
  • Getter Decorator: Validate properties accessed via getters.
  • Setter Decorator: Validate properties accessed via setters.

Security Utilities

  • Security Validation: Validate security-related properties.
  • Security Decorator: Decorate properties with security validation.
  • Security Events: Handle security-related events.

Roadmap

The rest-data-validator project aims to continually evolve with the needs of developers and the dynamics of RESTful API design. Below is a tentative roadmap of features and improvements we're exploring:

Upcoming Features

  • [X] Nested Validation Support: Implement validation for complex, nested data structures to accommodate intricate API schemas.
  • [X] Asynchronous Validators: Introduce validators capable of handling asynchronous operations, useful for database lookups or external API validations.
  • [ ] Internationalization: Offer localized error messages to better serve a global user base.
  • [ ] Sanitization Enhancements: Expand sanitization utilities for preprocessing data, ensuring robust input handling before validation.
  • [X] Framework Middleware: Develop middleware for seamless integration with popular server frameworks like Express and NestJS.
  • [ ] Runtime Type System Integration: Explore compatibility with runtime type validation libraries to enhance JavaScript validation capabilities.
  • [X] CLI Tooling: Build CLI tools for generating validator schemas from TypeScript type definitions, aiding in rapid development cycles.
  • [ ] Plugin Architecture: Create an extensible plugin system allowing custom validators and sanitizers, fostering community-driven enhancements.
  • [X] Performance Optimization: Profile and optimize the core validation logic to efficiently handle large datasets and reduce overhead in high-throughput environments.
  • [X] GUI for Schema Building: Provide a graphical interface for constructing and exporting validation schemas, streamlining the setup process for rest-data-validator.

We welcome community input and contributions to help shape the future of rest-data-validator. If you have ideas or features you’d like to see, please open an issue to start the conversation.

Note: The roadmap is subject to change and reflects current planning and priorities.

Contributing

Contributions are welcome! Please read our contributing guide for details on our code of conduct, and the process for submitting pull requests to us.

Support Us

If you find the REST Data Validator helpful or interesting, please consider giving it a star on GitHub! 🌟 Your support encourages us to continue developing and maintaining this project.

Why Star Us?

  • Recognition: A star is a token of appreciation that motivates open-source contributors.
  • Feedback: It tells us that our work is valued, guiding us on what features or improvements to prioritize.
  • Visibility: More stars increase our project's visibility, helping others discover this tool.

How to Star Our Repository

  1. Visit the REST Data Validator GitHub page.
  2. In the top-right corner of the page, click the "Star" button.
  3. That's it! You've just made our day a little brighter.

Your star is much more than just a number to us – it's a sign that we're on the right track. Thank you for your support, and we hope REST Data Validator helps you in managing and validating your RESTful APIs more effectively.

Feel free to explore the repository, check out the latest updates, and contribute if you can. Together, we can make REST Data Validator even better!

Author

License

This project is licensed under the MIT License - see the LICENSE.md file for details.